說到原型鏈不得不提到建構函式,任何乙個物件都是由建構函式new出來的,其建構函式通過new來使用,作用是例項化物件。
原型:任何乙個函式都有乙個prototype屬性。
下圖就是建構函式,例項化,原型的關係圖。
1.建構函式通過.prototype找到原型上的屬性和方法。
2.例項化的物件能通過__proto__找到建構函式的原型的屬性和方法。
3.這裡特別注意例項化的物件是不能訪問建構函式裡面的屬性和方法的(這裡例項化物件只能訪問它原型上的屬性和方法)
function person(name,age)
var p = new person('張三','12')
person.prototype.color='red';
person.job='前端';
consoloe.log(p.name) //張三
consoloe.log(p.color) //red
consoloe.log(p.job) //undefined
原型鏈:
任何乙個物件都有乙個prototype屬性,有prototype屬性就有__proto__物件,(這裡的__proto__就是原型),而__proto__物件又會有__proto__,這樣一環一環就形成了原型鏈。
說白點就是__proto__相當於父親,那麼它是不是有爺爺,太爺爺,這樣就形成了乙個鏈式的結構就叫做原型鏈。
下面這個紅框標出來的就是它的原型鏈
這個原型鏈簡單理解就是,例項p的母親是person建構函式,父親是person.prototype。而person.prototype的母親就是object建構函式,父親就是object.prototype,在往上就是null了。例項p最終可以使用原型鏈上的一切屬性和方法,就是它能繼承它父親,父親的父親的財產(屬性和方法),但母親的,母親的母親的是不行的,(通俗的就是母親只負責生,父親負責養)
JS 物件 JS原型 原型鏈
參考學習 js物件 構造器函式 建立物件的函式。物件分為普通物件和函式物件。所有物件都有 proto 屬性 函式物件不止有 proto 屬性,還有prototype屬性 稱為原型物件 1.new function 產生的物件都是函式物件。2.所有函式物件的 proto 都指向function.pro...
js 原型與原型鏈
5條原型規則 1.所有的引用型別 陣列 物件 函式 都具有物件特性,即可自由擴充套件屬性 除了 null 除外 2.所有的引用型別 陣列 物件 函式 都有乙個 proto 隱式原型 屬性,屬性值是乙個普通的物件。3.所有的函式,都有乙個prototype 顯式原型 屬性,屬性值也是乙個普通的物件。4...
JS原型物件,原型鏈
js中建立物件都是通過建構函式建立的,所以每個物件中都有乙個指向其建構函式的指標constructor var obj new object var arr new array var obj2 字面量建立實質上是上面方式的簡寫 var arr2 var str new string test 建立...