什麼是原型鏈

原型鏈是 JavaScript 最基本的概念,之一。想要講明白什麼是原型鏈也不是那麼容易的事情,MDN 上有一篇關於繼承和原型鏈的文章,把原型鏈解釋得很清楚,可是官方文檔缺少總結,看完以後可能只有一個模糊的概念,仍是不能清晰地解釋出,什麼是原型鏈。javascript

那麼,簡單少字的總結他來了:java

  1. 原型鏈用來描述對象之間的關係
  2. prototype 是函數的特殊屬性,指向它的原型對象[1]
  3. 原型是對象的一個屬性,指向其構造函數的 prototype 屬性,即構造函數的原型對象[2]
  4. 幾乎全部對象都是位於原型鏈頂端的 Object 的實例,因此一個普通對象的原型就像一根同樣,最終會指向 Object 的原型對象
  5. Object 的原型對象也有原型,指向 null ,根據定義,null 沒有原型,因此原型鏈的終點就是 null [3]

show me ur code:函數

[1]:咱們能夠看看字符串對象的例子prototype

執行代碼code

console.log(String);
console.log(String.prototype);

能夠獲得相似的輸出對象

ƒ String() { [native code] }
String {"", constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ, …}

[2]:繼續看字符串的例子繼承

let str = new String('str');
console.log(str);
console.log(Object.getPrototypeOf(str));
console.log(Object.getPrototypeOf(str) === String.prototype);

能夠獲得相似的輸出ip

String {"str"}
String {"", constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ, …}
true

[3]:直接訪問一下 Object 原型對象的原型原型鏈

console.log(Object.getPrototypeOf(Object.prototype));
null
相關文章
相關標籤/搜索