建立了乙個a物件,若現在還想建立乙個b物件,內容和a物件一樣,那麼不需要像a一樣敲如此繁多的**,直接讓b引用a就行了。
let b=a 這裡我們稱b為例項物件,a為引用物件;
b.__proto__ === a.prototype;//true
__proto__是例項物件的隱性方法,prototype是引用物件的顯性方法;
若是再某乙個物件裡面找方法,在物件中找不到則通過物件的隱性方法去找它的上一級
簡單的來說b.name,b裡沒有包含name的屬性,則去b.__proto__裡去找,而,b.__proto__ === a.prototype;
從而找到了a的name屬性;形象的來說b引用了a,則a為b的媽媽,b找不到的東西,b就找他的媽媽要,b.__proto__就是b在找媽媽,,a.prototype就是媽媽在回應b;
而在稍微複雜一點點的程式中,通過__proto__來一層層找從而形成一條鏈,稱為原型鏈;原型鏈的,而原型鏈的盡頭是object,而objecte.__proto__為null;
原型 和 原型鏈
每乙個js物件 null除外 都和另乙個物件相關聯。另乙個 物件就是我們熟知的原型,每乙個物件都從原型繼承屬性。所有通過物件直接量建立的物件都具有同乙個原型物件,並可以通過js object.prototype 獲得對原型物件的引用。通過關鍵字new和構造函式呼叫建立的物件的原型就是建構函式的 pr...
原型和原型鏈
原型鏈 例項物件與原型之間的連線,叫做原型鏈 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乙個物件的過程 建立乙...