1. 程式人生 > 其它 >JavaScript 原型、原型鏈的深入理解

JavaScript 原型、原型鏈的深入理解

在 JavaScript 中,大部分東西都是物件,陣列是物件,函式也是物件,物件更加是物件。不管我們給陣列和函式定義什麼內容,它們總是有一些相同的方法和屬性。比如說hasOwnProperty(),toString()等

這說明一個物件所擁有的屬性不僅僅是它本身擁有的屬性,它還會從其他物件中繼承一些屬性。當 JavaScript 在一個物件中找不到需要的屬性時,它會到這個物件的父物件上去找,以此類推,這就構成了物件的原型鏈。理解js的原型鏈對使用 JavaScript 的物件非常有幫助。

讓我們通過一個例子由淺到深地理解原型鏈:

function Foo(_name) {
  this.name = _name;
}
Foo.prototype.show = function() {
  console.log('I am ', this.name);
};
var f1 = new Foo('obj1');
var f2 = new Foo('obj2');

f1.show();  //  I am obj1
f2.show();  //  I am obj2

這是我們經常使用的建立物件的方式,將共同的方法放到Foo.prototype中,所有例項都共有這個方法了。
這是怎麼實現的呢?我們看下面這張圖的第一行:

轉載:https://www.jianshu.com/p/116ea3be6ef5