原型 原型鏈

2021-08-18 02:42:09 字數 731 閱讀 6468

var animal = function(){};

var dog = function(){};

animal.price = 2000;//

dog.prototype = animal;

var tidy = new dog();

console.log(dog.price) //為什麼輸出 undefined

console.log(tidy.price) //為什麼輸出 2000

因為原型鏈是依賴於__proto__,而不是prototype。

dog是函式物件,本身沒有price屬性,此時dog的__proto__屬性指向的是其建構函式的原型。

dog的建構函式就是function,因為var dog = function(){};語句實際上是var dog = new function();,所以,dog.__proto__ === function.prototype;而function.prototype並沒有price屬性,如果加一句:function.prototype.price = 123;那麼第乙個列印就是123;

如此依賴,tidy是乙個普通物件,由dog函式構造而來,因此tidy__proto__ == dog.prototype == animal;所以當tidy上找不到price屬性時,會從proto尋找原型上的方法,找到animal物件,animal物件有price屬性,則返回。

原型,原型鏈

原型object.hasownproperty proname object 乙個物件的例項 propname 乙個屬性名稱的字串值 返回乙個布林值原型鏈中的this 原型物件 原型物件的作用 一般情況下,會把方法宣告在原型物件裡。目的是實現繼承。當物件訪問自身屬性或方法時,先從自身找有沒有,如果有...

原型 原型鏈

在最近的原型和原型鏈的學習中,感覺壓力有點大,學習難度也比較大,但又很基礎很重要,我們在學習中得要下很大的功夫才行。無論什麼時候,只要建立了乙個新的函式,就會根據一組特定的規則為這個函式建立乙個prototype的屬性,prototype這個屬性指向函式的原型物件,然後所有的的原型物件都會有乙個co...

原型 原型鏈

1 所有的物件,都有prototype屬性。只不過 例項的prototype 是 undefined。2 所有的建構函式 都是 function 的例項。外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img jm7mc8gh 1597897515025 原型.png js中每個物件都有...