JavaScript 原型、原型鏈的深入理解
阿新 • • 發佈:2021-06-16
在 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中,所有例項都共有這個方法了。
這是怎麼實現的呢?我們看下面這張圖的第一行: