js原型及原型鏈

2021-09-08 23:30:31 字數 1633 閱讀 2024

在建構函式建立出來的時候,系統會預設幫建構函式建立乙個原型物件。

原型物件中的屬性和方法可以被建構函式建立出來的物件訪問。

建構函式.prototyoe

屬性(方法)的查詢原則:

當訪問物件的成員的時候,會在自身找有沒有,如果有直接使用,

如果沒有找到,則去當前物件的原型物件中找,如果找到了直接使用

如果沒有找到,則去原型物件的原型物件中找,如果找到了直接使用

如果沒有找到,繼續向上查詢,直到找到object.prototype,如果沒有屬性則是undefined 方法則報錯

_proto_屬性(是乙個非標準的屬性,不推薦使用,主要用來做除錯)

在使用新的物件替換掉預設的原型物件之後,原型物件中的constructor屬性會變成object,為了保證原型能正常訪問,需要在原型上加乙個constroctor 屬性指向建構函式

(1)利用原型中的成員可以被其他相關的物件共享這一特性,可以實現繼承,這種實現繼承的方式叫原型繼承。

//1,給原型物件中新增成員   物件繼承了原型物件

function person(name,age)

person.prototype.sayhello=function()

var p = new person("張三",2);

p.sayhello();

(2)直接替換原型物件來繼承 (很可能會將原有原型中的成員丟失)

function person(name,age)

var parent =

}

person.prototype= parent;

var p = new person("張三",2);

p.sayhello();

(3)利用混入的方式給原型物件新增成員

function person(name,age)

var parent =

}

for(var k in parent)

var p = new person("張三",2);

p.sayhello();

object.create(obj)

1,constructor 

原型物件的乙個屬性,指向該原型物件相關聯的建構函式。

2,hasownproperty 

用來判斷物件本身是否擁有某個屬性

3,propertyisenumerable

判斷屬性是否屬於物件本身 ,判斷屬性是否可以被遍歷。

4,tostring 和  tolocalestring

都是轉換成字串,tolocalestring 是轉化成本地的字串,根據電腦的設定。

5,valueof 

獲取當前物件的值

在物件參與運算的時候

1.預設的會先去呼叫物件的valueof方法,

2.如果valueof獲取到的值,無法進行運算 ,就去去呼叫p的tostring方法  最終做的就是字串拼接的工作

6,__proto__

可以使用 物件.__proto__ 去訪問原型物件

語法 :   物件 instanceof 建構函式

判斷該建構函式的原型是否在該物件的原型鏈上。

js原型及原型鏈

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

js中的原型及原型鏈

1.什麼是原型 a.每乙個物件都有原型,使用屬性 proto 引用,除了null 用於指向建立它的建構函式的prototype b.原型就是該物件表示從 繼承。通過它可以實現屬性繼承。2.proto 和prototype 的區別 proto 是每乙個物件都有的屬性。原型鏈中真正起作用的是 proto...

JS中的原型及原型鏈

什麼是原型?原型的作用 資料共享 1.1原型的資料共享 在建構函式內部新增say方法 function person name 例項化 var p newperson 小明 var p1 newperson 小紅 console.log p.say p1.say false 總結 不同例項上的同名方...