国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

原型與原型鏈學習筆記

jiekechoo / 2713人閱讀

摘要:原型相同對象的共有屬性也稱作原型原型鏈中所有的對象都是由它的原型對象繼承而來。說的直白點就是,所有原型鏈的屬性,最終都指向的是對象的而對象的指向的是。

原 型:相同對象的共有屬性也稱作原型

原型鏈:中所有的對象都是由它的原型對象繼承而來。而原型對象自身也是一個對象,它也有自己的原型對象,這樣層層上溯,就形成了一個類似鏈表的結構,這就是原型鏈

在JS中,不同類型對象都有各自相同類型共有的屬性,也有全部對象共有的屬性,如果每個對象的屬性都多帶帶出來,會非常浪費資源,

var a = new String("a");
var b = new Number(1);
var c = new Boolean(true);
//可以發現,不管是字符串還是數值還是布爾,它們都有toString()屬性
a.toString
? toString() { [native code] }

b.toString
? toString() { [native code] }

c.toString
? toString() { [native code] }

所以JS將公共的屬性多帶帶出來【如全部對象共用屬性valueOf() ,toString()】,JS通過__proto__ 來指向每個類型對象的公共屬性。比如,有五個string對象五個number對象,每個對象的值都是不同的,但對象類型都是一樣的。

var a = new Number(1)
var b = new Number(2)
//雖然變量a和b的值不同,但是它們共有的屬性都是__proto__: Number
console.log(a)
Number {1}
__proto__: Number
[[PrimitiveValue]]: 1

console.log(b)
Number {2}
__proto__: Number
[[PrimitiveValue]]: 2



string對象和number對象都有自己私有屬性(指相同對象類型的私有屬性),每個對象的__proto__都指向自己相同對象類型的私有屬性,相同對象類型的私有屬性也有自己的__proto__,它指向的是全部對象共有的屬性。__proto__: Number下面的__proto__又指向了全部對象共有的屬性。

全部對象共有的屬性,沒有__proto__屬性,它指向的是null,通過下面截圖看出普通的object對象__proto__下的屬性已經沒有__proto__指到其他地方了。

說的直白點就是,所有原型鏈的__proto__屬性,最終都指向的是object對象的__proto__而object對象的__proto__指向的是null。

var 對象 = new 函數()
對象.__proto__ === 對象的構造函數.prototype


// 推論
var number = new Number()
number.__proto__ = Number.prototype

var object = new Object()
object.__proto__ = Object.prototype

var function = new Function()
function.__proto__ = Function.prototype

// 另外,所有函數都是由 Function 構造出來的,所以
Number.__proto__ = Function.prototype // 因為 Number 是函數,是 Function 的實例
Object.__proto__ = Function.prototype // 因為 Object 是函數,是 Function 的實例
Function.__proto__ == Function.prototye // 因為 Function 是函數,是 Function 的實例!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/104592.html

相關文章

  • JavaScript學習第十天筆記(繼承)

    摘要:繼承原型鏈如果構造函數或對象的原型指向構造函數或對象,的原型再指向構造函數或對象,以此類推,最終的構造函數或對象的原型指向的原型。 繼承 原型鏈 如果構造函數或對象A的原型指向構造函數或對象B,B的原型再指向構造函數或對象C,以此類推,最終的構造函數或對象的原型指向Object的原型。由此形成了一條鏈狀結構,被稱之為原型鏈。按照上述的描述,在B中定義的屬性或方法,可以在A中使用并不需要...

    baiy 評論0 收藏0
  • JS學習筆記(第6章)(面向對象之繼承——JS繼承的六大方式)

    摘要:除此之外,在超類型的原型中定義的方法,對子類型而言也是不可兼得,結果所有類型都只能用構造函數模式。創建對象增強對象指定對象繼承屬性這個例子的高效率體現在它只調用了一次構造函數。 1、原型鏈 原型鏈的基本思想是利用原型讓一個引用類型繼承另一個引用類型的屬性和方法。構造函數、原型和實例的關系:每個構造函數都有一個原型對象;原型對象都包含著一個指向構造函數的指針;實例都包含一個指向原型對象的...

    lscho 評論0 收藏0
  • JavaScript高級程序設計學習筆記之繼承模式

    摘要:實現原型鏈的方式如下讓原型對象稱為另一個構造函數的實例這個實例繼承了的屬性上述代碼繼承是通過來實現,創建的實例,并將該實例賦給。無疑,集兩者之大成,這才是最常用的繼承模式。 原型鏈 JavaScript的繼承主要依靠原型鏈來實現的。我們知道,構造函數,原型,和實例之間的關系:每個構造函數都有一個原型對象,原型對象都包含一個指向構造函數的指針,而實例都包含一個原型對象的指針。 實現原型鏈...

    suxier 評論0 收藏0
  • [學習筆記] 小角度看JS原型

    摘要:雖然在腳本中沒有標準的方式訪問,但在每個對象上都支持一個屬性,用于訪問其構造函數的原型對象。說的是構造函數和原型對象之間的關系,說的是實例對象和原型對象之間的關系。 前言 在 segmentfault 上看到這樣一道題目: var F = function(){}; Object.prototype.a = function(){}; Function.prototype.b = fu...

    Cciradih 評論0 收藏0
  • JS學習筆記(第6章)(實現繼承的幾種方式)

    摘要:使用最多的繼承模式是組合繼承,這種模式使用原型鏈繼承共享的屬性和方法,而借用構造函數繼承實例屬性。原型式繼承,可以在不必預先定義構造函數的情況下實現繼承,其本質是執行給定對象的淺復制。 1、原型鏈實現繼承 function SuperType() { this.property = true; } SuperType.prototype.getSuperValue = func...

    hiyayiji 評論0 收藏0

發表評論

0條評論

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