原型 和 原型鏈

2021-07-08 13:16:14 字數 581 閱讀 6277

每乙個js物件(null除外)都和另乙個物件相關聯。『另乙個』物件就是我們熟知的原型,每乙個物件都從原型繼承屬性。

所有通過物件直接量建立的物件都具有同乙個原型物件,並可以通過js** object.prototype 獲得對原型物件的引用。通過關鍵字new和構造函式呼叫建立的物件的原型就是建構函式的 prototype屬性的值。因此,同使用{}建立物件一樣,通過new object()建立的物件也繼承自object.prototype。同樣,通過new array()建立的物件原型就是array.prototype,通過new date()建立的物件的原型就是date.prototype。

沒有原型的物件為數不多,object.prototype就是其中之一。它不繼承任何屬性。其他原型物件都是普通物件,普通物件都具有原型。所有的內建建構函式(以及大部分自定義的建構函式)都具有乙個繼承自object.prototype的原型。例如,date.prototype的屬性繼承自object.prototype,因此由new date()建立的date物件的屬性同時繼承自date.prototype和object.prototype。這一系列鏈結的原型物件就是所謂的『原型鏈』(prototype chain)。

原型和原型鏈

原型鏈 例項物件與原型之間的連線,叫做原型鏈 function human human.prototype.age 22 var a new human console.log a.age 這裡的age掛載到了human的原型上面了。其實原型就是乙個物件。a為什麼能找到原型上面的物件呢?這裡例項物件...

原型和原型鏈

建構函式 function foo name age function 其實是 var a new object 的語法糖 var a 其實是 var a new array 的語法糖 function foo 其實是 var foo new function 的語法糖 new乙個物件的過程 建立乙...

原型和原型鏈

如果obj 是 例項物件 obj.proto obj.prototype obj.proto obj的建構函式下的.prototype 建構函式才有 prototype屬性 這是建構函式的原型 通過this設定的屬性和方法屬於例項化後物件的屬性和方法。建構函式原型下的方法和屬性 f.prototyp...