3 JS原型繼承傳參及原型鏈

2021-09-16 18:39:22 字數 3100 閱讀 4036

原型

prototype新增原型屬性

__proto__用於修改和獲取原型屬性

__proto__和prototype的區別

//原型

function

person()

person.prototype.name =

'tina'

person.prototype.age =

26person.prototype.

action

=function()

//例項化

var person1 =

newperson()

person1.__proto__.name =

'zhangting'

// 修改原型屬性

person1.age =

20//修改該例項屬性

var person2 =

newperson()

console.

log(person2.name)

// zhangting

console.

log(person1.

action()

)// zhangting

console.

log(person1.age)

// 20

console.

log(person2.age)

// 26

//檢查當前例項是否屬於某乙個原型

console.

log(person.prototype.

isprototypeof

(person1)

)//true

混合使用建構函式和原型
//建構函式缺點:new多少次就會建立多少次這個建構函式,造成記憶體洩漏,效能變差

function

person

(name,age)*/}

person.prototype.

action

=function()

var person1 =

newperson

('tina',26

)var person2 =

newperson

()

繼承
//繼承分 介面繼承和實現繼承,但es只支援實現繼承

/*原型*/

functiona(

)a.prototype.

like

=function()

functionb(

)b.prototype =

newa()

// b繼承原型a的所有屬性

/*例項化*/

var bb =

newb()

bb.like()

// 333

bb.__proto__.

like()

//333

擴充套件1

/*原型*/

functiona(

)a.prototype.

like

=function()

functionb(

)b.prototype =

newa()

// b繼承原型a的所有屬性

b.prototype.

like

=function()

/*例項化*/

var bb =

newb()

bb.like()

//222

bb.__proto__.

like()

//222

//ps:找例項,找原型,找父項

擴充套件2

/*原型*/

functiona(

)a.prototype.

like

=function()

functionb(

)}b.prototype =

newa()

// b繼承原型a的所有屬性

/*例項化*/

var bb =

newb()

bb.like()

//222

bb.__proto__.

like()

//333

//ps:找例項,找原型,找父項

擴充套件3

/*原型*/

functiona(

)a.prototype.

like

=function()

functionb(

)}b.prototype =

newa()

// b繼承原型a的所有屬性

/*例項化*/

var bb =

newb()

bb.like

=function()

bb.like()

//111 例項

bb.__proto__.

like()

//333 父項

//ps:找例項,找原型,找父項

原型鏈

由繼承而形成的關係鏈就叫做原型鏈

傳參

/*

在乙個物件中呼叫另乙個物件,this指的是作用域

call(this,name,age)

*/function

parent

(name, age)

parent.prototype.

getparentname

=function()

function

son(

)son.prototype =

newparent()

son.prototype.

getsonname

=function()

var ss =

newson()

console.

log(ss.name)

console.

log(ss.age)

js原型及原型鏈

在建構函式建立出來的時候,系統會預設幫建構函式建立乙個原型物件。原型物件中的屬性和方法可以被建構函式建立出來的物件訪問。建構函式.prototyoe 屬性 方法 的查詢原則 當訪問物件的成員的時候,會在自身找有沒有,如果有直接使用,如果沒有找到,則去當前物件的原型物件中找,如果找到了直接使用 如果沒...

js原型及原型鏈

每個物件都有proto屬性用於指向建立它的建構函式的原型物件。function animal name animal.prototype.getname function animal.prototype.getage function var animal1 newanimal kate var ...

js原型物件 原型鏈 繼承

原型物件 只要建立了乙個新函式,就會根據一些特定的規則為該函式建立乙個prototype屬性,這個屬性指向的物件就是該新函式的原型物件。預設情況下,所有原型物件都會自動獲取乙個constructor屬性,這個屬性是乙個指向prototype屬性所在函式的指標 原型物件的優點 可以讓所有物件例項共享它...