原型鏈理解 例項分析

2021-08-20 16:34:50 字數 2026 閱讀 4489

這兩天開始接觸原型鏈,有點難理解,就記錄了幾種不同情況下的原型鏈查詢情況。感覺大體查詢情況類似,跟著console.dir列印出來的東西查詢幾次更有助於理解。理解各種物件的原型是基本要求。

情況一:

結果:

分析:

-> p._proto_ ->person.prototype
情況二:

結果:

分析:-> p._proto_ ->person.prototype -> person.prototype._proto_ ->object.prototype

如果object.prorotype.say不存在,程式會報錯,因為object.prototype不存在某屬性和方法,就說明真的不存在次=此屬性和方法。

情況三:

結果:

分析:

情況四:

function person(name,age) 

// person.say = function()

object.prototype.say = function()

function.prototype.say = function()

function.say = function()

person.prototype.say = function() ;

let p = new person('月初',16);

person.say();

結果:

分析:在此應該注意乙個概念,建構函式原型下的屬性和方法只能給他的例項化物件用,就是person.prototype.say只能給他的例項化物件p用,而他自己的原型物件則是function

情況五:

this.name = name;

this.age = age;

}person.say = function()

object.prototype.say = function()

// function.prototype.say = function()

function.say = function()

person.prototype.say = function() ;

let p = new person('月初',16);

person.say();

結果:

分析:

() -> person._proto_ -> function.prototype -> function.prototype._proto_ -> object.prototype
情況六:

結果:

情況七:

結果:

分析:因為function的原型就是function

js 原型 原型鏈理解

執行發現如下 自定義乙個函式,函式包含兩個關鍵資料 prototype,proto 1 原型 prototype person具有prototype屬性 包含我們定義的屬性name,age以及constructor,並且constructor指向我們的person函式,可以理解為prototype就...

原型鏈繼承例項

先用物件字面量去構造乙個有用的物件 function says function 一旦有了乙個想要的物件,我們就可以利用object.create方法構造出更多的例項來 var mycat object.create mymammal mycat.name yzs mycat.saying meow...

理解js原型和原型鏈

一.普通物件和函式物件 js中,萬物皆物件,大體分為兩種 普通物件,函式物件。凡是通過new function 建立的都是函式物件,其他的則為普通物件。下面舉例說明 function fun1 function var fun2 function function var fun3 new func...