成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript學(xué)習(xí)之繼承

CHENGKANG / 1040人閱讀

摘要:繼承是面向?qū)ο缶幊陶Z言中的一個重要的概念,繼承可以使得子類具有父類的屬性和方法或者重新定義追加屬性和方法等。但是在中沒有類的概念,是基于原型的語言,所以這就意味著對象可以直接從其他對象繼承。

繼承是面向?qū)ο缶幊陶Z言中的一個重要的概念,繼承可以使得子類具有父類的屬性和方法或者重新定義、追加屬性和方法等。但是在Javascript中沒有的概念,是基于原型的語言,所以這就意味著對象可以直接從其他對象繼承。

Ecmascript中描述了原型鏈的概念,并將原型鏈作為繼承的主要方法,主要是想利用原型鏈讓一個引用類型繼承另一個引用類型的屬性和方法。

構(gòu)造函數(shù)、原型對象、實例之間的關(guān)系是:每個構(gòu)造函數(shù)都有一個原型對象,每個原型對象中都有一個指針指向了該構(gòu)造函數(shù)(constructor):

function A(){}
A.prototype.constructor == A //true

而實例中有一個內(nèi)部的指針指向了原型對象([[prototype]]),在chrome,firefox等幾款瀏覽器的JS引擎中加入了__proto__來訪問原型對象[[prototype]]:

function B(){}
var b = new B();
b.__proto__ == B.prototype // true

當(dāng)在實例對象中查找某一屬性或方法的時候,會優(yōu)先查找當(dāng)前實例中是否包含該屬性,如果未找到,便會在該實例的原型對象中查找,如果還未找到,就會再沿著原型對象中的內(nèi)部原型指針繼續(xù)往上層原型對象查找,層層遞進(jìn),這樣就構(gòu)成了所謂的原型鏈。

function SuperType() {
  this.peoperty = true;
}

SuperType.prototype.getSuperValue = function() {
  return this.property;
}

function SubType() {
  this.subproperty = false;
}

SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function() {
  return this.subproperty;
}

var instance = new SubType();
console.log(instance.getSuperValue());  //true

上面的代碼中SubType繼承了SuperType,這是通過將SuperType的實例賦給SubType.prototype實現(xiàn)的,本質(zhì)是重寫了SubType的原型對象。

在Javascript中,所有引用類型都默認(rèn)繼承了Object,一樣都是通過原型鏈來繼承的。所以所有函數(shù)的默認(rèn)原型都是Object.prototype,因此默認(rèn)原型內(nèi)部都會有一個指向Object.prototype的指針,所以上面的代碼的原型鏈圖形的頂層應(yīng)該還有一個Object:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88228.html

相關(guān)文章

  • JavaScript學(xué)習(xí)之對象原型及繼承

    摘要:原型要掌握這三者之間的關(guān)系,通過代碼例子記錄一下自身屬性的這里就是通過代碼看一下做了什么默認(rèn)情況下,將的所有屬性包括繼承的賦值給有什么東西呢自己的原型鏈,添加一個屬性,用來指明對象的誰構(gòu)造的自身全部屬性,這邊構(gòu)建一個空對象原型,所以沒有自有 原型 要掌握這三者之間的關(guān)系prototype,constructor,__proto__通過代碼例子記錄一下 function F() { ...

    妤鋒シ 評論0 收藏0
  • JavaScript學(xué)習(xí)之Object(下)new命令

    摘要:命令作用作用是執(zhí)行構(gòu)造函數(shù),返回實例對象上面例子是自定義一個構(gòu)造函數(shù),其最大的特點就是首字母大寫,用執(zhí)行構(gòu)造函數(shù)其中,在的執(zhí)行下,代表了實例化后的對象,這個也就有屬性注意點如果不用執(zhí)行構(gòu)造函數(shù),那么指向的是全局有兩種方式可以避免內(nèi)部定義嚴(yán)格 new命令 new作用 作用是執(zhí)行構(gòu)造函數(shù),返回實例對象 function F() { this.name = object } var ...

    Salamander 評論0 收藏0
  • JavaScript學(xué)習(xí)之Object(下)相關(guān)方法

    摘要:它不區(qū)分該屬性是對象自身的屬性,還是繼承的屬性。那么我們要遍歷對象所有屬性,包括繼承以及不可遍歷的屬性,用加原型遍歷實現(xiàn)類似的用遞歸 Object靜態(tài)方法 Object自身方法,必須由Object調(diào)用,實例對象并不能調(diào)用 Object.getPrototypeOf() 作用是獲取目標(biāo)對象的原型 function F() {}; var obj = new F(); console.lo...

    amuqiao 評論0 收藏0
  • JavaScript學(xué)習(xí)之對象拷貝

    摘要:對象拷貝可遍歷屬性淺拷貝簡單的淺拷貝可以用,對存取器定義的對象也試用深拷貝屬性描述對象的拷貝這是個淺拷貝深拷貝不可遍歷屬性對象的拷貝例如拷貝獲得共同的原型,與是兄弟關(guān)系說明也繼承了原型,同級別簡潔化版 對象拷貝 可遍歷屬性 淺拷貝 if(typeof Object.prototype.copy != function) { Object.prototype.copy = fun...

    Aklman 評論0 收藏0
  • Python模塊文檔學(xué)習(xí)之抽象基類abc模塊

    摘要:里面關(guān)于抽象類的相關(guān)介紹中并沒有提供抽象類與抽象方法,但是提供了內(nèi)置模塊來模擬實現(xiàn)抽象類。主要類或函數(shù)這是用來生成抽象基礎(chǔ)類的元類。繼承方式中的抽象類模塊定義了幾個抽象類。 PEP里面關(guān)于抽象類的相關(guān)介紹:https://www.python.org/dev/pe...python中并沒有提供抽象類與抽象方法,但是提供了內(nèi)置模塊abc(abstract base class)來模擬實現(xiàn)...

    lauren_liuling 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<