在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 原型
注釋
對(duì)象
創(chuàng)建
基本運(yùn)算符
數(shù)據(jù)類型
函數(shù)
For 循環(huán)
Do...While 循環(huán)
長(zhǎng)度
While 循環(huán)
比較運(yùn)算符
索引
變量
高級(jí)運(yùn)算符
枚舉
條件邏輯
If
原型
可變性
數(shù)字
創(chuàng)建
編程基礎(chǔ)
屬性
銷毀
創(chuàng)建
等式
長(zhǎng)度
函數(shù)聲明
字符串
條件連接
循環(huán)
連接
引用
Else
數(shù)組
高階函數(shù)
全局化

原型

每個(gè)對(duì)象都與對(duì)象原型關(guān)聯(lián),繼承了對(duì)象原型的屬性。

所有對(duì)象創(chuàng)建時(shí)都從字面量對(duì)象({})繼承,且都自動(dòng)鏈接到的Object.prototype,Object.prototype 來(lái)自JavaScript標(biāo)準(zhǔn)。

當(dāng)JavaScript解釋器(在瀏覽器中一個(gè)模塊),試圖找到一個(gè)屬性,它要檢索,如下面的代碼:

var adult = {age: 26},
    retrievedProperty = adult.age;
 // 看上一行

首先,解釋器檢查對(duì)象有的每個(gè)屬性。例如,adult只有一個(gè)自己的屬性 - age。但是,除此之外,實(shí)際上還有幾個(gè)屬性,這是繼承自O(shè)bject.prototype。

var stringRepresentation = adult.toString();
 // 變量的值為 '[object Object]'

toString 是一個(gè) Object.prototype 的屬性, 這是繼承。它有一個(gè)函數(shù),返回值為一個(gè)對(duì)象的字符串。如果希望它返回一個(gè)更有意義的東西,那么你可以將其覆蓋。簡(jiǎn)單的添加一個(gè)屬性到adult對(duì)象。

adult.toString = function(){
    return "I'm "+this.age;
}

如果現(xiàn)在調(diào)用 toString 函數(shù),解釋器將發(fā)現(xiàn)一個(gè)新的對(duì)象中的屬性然后停止。

解釋器解析某個(gè)屬性時(shí)會(huì)先檢查對(duì)象自己,再進(jìn)一步檢查他的原型。

要設(shè)置自己的對(duì)象為原型而不是默認(rèn)的Object.prototype,你可以調(diào)用以下的Object.create

var child = Object.create(adult);
 /* 通過(guò)這種方式創(chuàng)建的對(duì)象可以讓我們輕松替換默認(rèn)的Object.prototype成我們想要的。在這里,child的原型是adult對(duì)象。
 */
child.age = 8;
 /* 在此之前,child根本沒(méi)有自己的年齡屬性,解釋器會(huì)尋找child的原型中是否有該屬性?,F(xiàn)在,當(dāng)我們?cè)O(shè)置了child自身年齡,解釋器就不深入尋找了。
注意:adult的年齡仍為26。
  */
var stringRepresentation = child.toString();
 // 值為 "I'm 8"。
 /* 注意:我們沒(méi)覆蓋child的toString屬性,因此adult類函數(shù)不會(huì)被調(diào)用。如果adult沒(méi)有toString屬性,那么Object.prototype的toString類函數(shù)將被調(diào)用,我們將得到"[object Object]" 而不是 "I'm 8" 。
 */

child'的原型是adult,其原型為Object.prototype。這一系列原型被稱為原型鏈。

上一篇:注釋下一篇:對(duì)象