国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript創建對象_動力節點Java學院整理

2019-11-19 16:14:31
字體:
來源:轉載
供稿:網友

JavaScript對每個創建的對象都會設置一個原型,指向它的原型對象。

當我們用obj.xxx訪問一個對象的屬性時,JavaScript引擎先在當前對象上查找該屬性,如果沒有找到,就到其原型對象上找,如果還沒有找到,就一直上溯到Object.prototype對象,最后,如果還沒有找到,就只能返回undefined。
例如,創建一個Array對象:

var arr = [1, 2, 3];

其原型鏈是:

arr ----> Array.prototype ----> Object.prototype ----> null

Array.prototype定義了indexOf()、shift()等方法,因此你可以在所有的Array對象上直接調用這些方法。
當我們創建一個函數時:

function foo() { return 0;}

函數也是一個對象,它的原型鏈是:

foo ----> Function.prototype ----> Object.prototype ----> null

由于Function.prototype定義了apply()等方法,因此,所有函數都可以調用apply()方法。

很容易想到,如果原型鏈很長,那么訪問一個對象的屬性就會因為花更多的時間查找而變得更慢,因此要注意不要把原型鏈搞得太長。

構造函數

除了直接用{ ... }創建一個對象外,JavaScript還可以用一種構造函數的方法來創建對象。它的用法是,先定義一個構造函數:

function Student(name) { this.name = name; this.hello = function () {  alert('Hello, ' + this.name + '!'); }}

你會問,咦,這不是一個普通函數嗎?

這確實是一個普通函數,但是在JavaScript中,可以用關鍵字new來調用這個函數,并返回一個對象:

var xiaoming = new Student('小明');xiaoming.name; // '小明'xiaoming.hello(); // Hello, 小明!

注意,如果不寫new,這就是一個普通函數,它返回undefined。但是,如果寫了new,它就變成了一個構造函數,它綁定的this指向新創建的對象,并默認返回this,也就是說,不需要在最后寫return this;。

新創建的xiaoming的原型鏈是:

xiaoming ----> Student.prototype ----> Object.prototype ----> null

也就是說,xiaoming的原型指向函數Student的原型。如果你又創建了xiaohong、xiaojun,那么這些對象的原型與xiaoming是一樣的:
xiaoming

主站蜘蛛池模板: 三原县| 黎平县| 崇左市| 惠安县| 上杭县| 米脂县| 永安市| 阿拉善左旗| 沽源县| 甘孜县| 镇江市| 屯门区| 含山县| 于田县| 龙海市| 大冶市| 松江区| 富裕县| 安图县| 南通市| 桦甸市| 渭源县| 延边| 平利县| 湘乡市| 绥滨县| 毕节市| 平陆县| 日土县| 青州市| 从化市| 阿克苏市| 六盘水市| 革吉县| 渝北区| 五家渠市| 来宾市| 佳木斯市| 定边县| 碌曲县| 建平县|