原型鏈:例項物件與原型之間的連線,叫做原型鏈
function
human
()human.prototype.age = 22;
var a = new human();
console.log(a.age)
這裡的age掛載到了human的原型上面了。其實原型就是乙個物件。a為什麼能找到原型上面的物件呢?
這裡例項物件就是a
原型就是human.prototype
他們之間的鏈結就是原型鏈
function
human
()human.prototype.age = 22;
var a = new human();
a.age = 10
console.log(a.age) // 10
這裡面就可以將human.prototype.age = 22; 這個模擬成css裡面的class的權重
this.age = 20;這個模擬成css裡id的權重
a.age = 10 這個當然就是內聯元素權重最高,它會替換上面的this.age的值,因為this也就是a。所以最後的結果就是10
其實本質上是a先會在自己的prototype屬性上查詢有沒有 你需要的屬性,如果沒有的話就在查詢原型鏈上的。所以a.age是a上面的屬性所以它的權重是最高的
原型鏈的查詢是從內層一層一層往外查詢
並且原型鏈的最外層其實是 :object.prototype
function
human
() = 22;
object.prototype.age = 30;
var a = new human();
console.log(a.age)
console.log(a)//30 這個例子證明原型鏈的最終是object.prototype
原型 和 原型鏈
每乙個js物件 null除外 都和另乙個物件相關聯。另乙個 物件就是我們熟知的原型,每乙個物件都從原型繼承屬性。所有通過物件直接量建立的物件都具有同乙個原型物件,並可以通過js object.prototype 獲得對原型物件的引用。通過關鍵字new和構造函式呼叫建立的物件的原型就是建構函式的 pr...
原型和原型鏈
建構函式 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...