js基礎系列 1 原型鏈

2021-10-08 02:39:34 字數 1098 閱讀 2419

今天重新回顧了一下js的基礎知識,感覺自己的基礎還是不牢固,很多東西都忘記了.就此每天抽出時間來複習一下js的一些基礎知識.

js只有一種結構:物件.每個例項物件(object)都有乙個私有屬性( __ proto __),指向他的建構函式的原型物件( prototype ).該原型物件也有乙個自己的原型物件( __ proto __),層層向上,直到乙個物件的原型物件為null.根據定義,null沒有原型,並且作為定義的最後一環.

我的理解裡面就是:定義的乙個函式(f()),在建立乙個物件(o)

function f()

let o = new f(); // a=1;b=2

再在f函式的原型上定義屬性:

f.prototype.b = 3;

f.prototype.c = 4;

不要再原型鏈上直接定義 f.prototype = ;這樣會直接打破原型鏈.

最後其原型鏈應該為:

—> —> object.prototype—> null

console.log(o.a); // 1

// a是o的自身屬性嗎?是的,該屬性的值為 1

console.log(o.b); // 2

// b是o的自身屬性嗎?是的,該屬性的值為 2

// 原型上也有乙個'b'屬性,但是它不會被訪問到。

// 這種情況被稱為"屬性遮蔽 (property shadowing)"

console.log(o.c); // 4

// c是o的自身屬性嗎?不是,那看看它的原型上有沒有

// c是o.[[prototype]]的屬性嗎?是的,該屬性的值為 4

console.log(o.d); // undefined

// d 是 o 的自身屬性嗎?不是,那看看它的原型上有沒有

// d 是 o.[[prototype]] 的屬性嗎?不是,那看看它的原型上有沒有

// o.[[prototype]].[[prototype]] 為 null,停止搜尋

// 找不到 d 屬性,返回 undefined

js基礎之原型和原型鏈 原型 1

原型其實就是function的乙個屬性,它定義了建構函式製造出的物件的共有祖先。通過該建構函式產生的物件,可以繼承該原型的屬性和方法。原型也是物件 簡單來說,我們建立的每乙個建構函式自出生開始就自動的帶有這個屬性,這個屬性叫做prototype。這個屬性是乙個指標,指向乙個物件。這個物件中的屬性和方...

JS原型鏈基礎

建立物件的方法 第一種方式 字面量 var o1 var o2 newobject 第二種方式 建構函式 varm function name var o3 newm o3 第三種方式 object.create 原型 建構函式 例項 原型鏈 結合上面的例子 m prototype.construc...

JS高階系列之原型 原型鏈

最近在看 j ascript忍者秘籍 這本書的時候,再加上最近遇到的關於原型 原型鏈的面試題,所以萌生了要把這些知識梳理一遍的想法,所以以下是我自己對原型 原型鏈的看法 提到原型,我們可能都會想到與物件有關的東西,但其實,原型是與函式才是密切相關的。每當我們建立乙個函式,都會有乙個指向該函式的原型物...