原型與原型鏈

2021-10-14 13:10:50 字數 3025 閱讀 5452

1.定義:原型是function物件的乙個屬性,它定義了建構函式製造出的物件的公共祖先。通過該建構函式產生的物件,可以繼承該原型的屬性和方法。原型也是物件。

2.利用原型特點和概念,可以提取共有屬性

3.物件如何檢視原型→隱式屬性__proto___

4.物件如何檢視隊形的建構函式→constructor

var a=

; console.

log(a.prototype)

;// undefined

console.

log(a.__proto__)

;// object {}

varb

=function()

console.

log(b.__proto__)

;//function()

__proto__屬性指向誰?

__proto__的指向取決於物件建立時的實現方式,以下圖表列出了三種常見方式建立物件後__proto__分別指向誰

1.字面量方式:

3.object.create方式

// 1.字面量方式

var a =

; console.

log(a.__proto__)

;// object{}

console.

log(a.__proto__ === a.constructor)

;// false

// 2.構造器方式

vara

=function()

;var a =

newa()

; console.

log(a.__proto__)

;// a{}

console.

log(a.__proto__ === a.constructor)

;// false

// 3.object.create()方式

var a1 =

var a2 = object.

create

(a1)

; console.

log(a2.__proto__)

;console.

log(a2.__proto__ === a.constructor)

;// false

以上為圖1例外情況

什麼是原型鏈?

由於__proto__是任何物件都有的屬性,而js裡萬物皆物件,所以會形成一條__proto__連起來的鏈條,遞迴訪問__proto__必須最終到頭,並且值是null。

當js引擎查詢物件的屬性時,先查詢物件本身是否存在該屬性,如果不存在,會在原型鏈上查詢,但不會查詢自身的prototype。

原型描述的就是繼承關係

原型就是該建構函式構造出物件的公有祖先

自己和原型都有同樣的屬性,就近選擇。自己沒有再去原型找。

利用原型特點和概念,可以提取共有屬性。

從自己身上拿的值,不是從原型鏈上拿。

如果想修改這個屬性,只能從person.prototype.lastname去修改,不能從物件修改

function

wheel

(wheelsize, style)

function

sit(c, sitcolor)

function

model

(height, width, len)

function

car(wheelsize, style, c, sitcolor, height, width, len)

}var car =

newcar

(100

,'蒂花之秀'

,'真皮沙發'

,'red'

,1800

,1900

,4900);

console.

log(car)

;// call 需要把實參按照形參的個數傳進去

原型與原型鏈

原型有兩種 1為顯示原型,2為隱式原型 1.顯示原型 a prototype b 每個函式都有乙個顯示原型prototype當然函式也有隱式原型 c 原型就是函式的乙個屬性,這個屬性名叫做prototype d 這個屬性即prototype的型別是object 2.隱式原型 a proto b 每個...

原型與原型鏈

圖中一共標了7條線,就一條一條的講,講完了就應該懂了 已知 1.函式是物件,原型也是物件 2.proto 每乙個物件都有,prototype是函式特有的 3.物件的 proto 屬性指向該物件建構函式的 原型 prototype 線1.物件f1的 proto 屬性指向其建構函式的原型 其建構函式 f...

原型與原型鏈

值型別 string,number,boolean,undefined function person var p1 newperson p1即為建構函式person 的例項化物件 var arr 10 20,30 40,50 60 這種語法糖形式的物件建立,是由array 函式建立簡化而來的。這個...