弄懂js原型鏈 物件建立

2021-09-19 18:30:37 字數 1920 閱讀 4153

第一種方式:字面量

var o1 = ;

var o2 = new object();

第二種方式:建構函式

var m = function (name) ;

var o3 = new m('o3');

第三種方式:object.create

var p = ;

var o4 = object.create(p);

m.prototype.say = function () ;

var o5 = new m('o5');

new 運算子的工作原理

var new2 = function (func)  else 

};

var o4 = object.create(p) 是通過原型鏈來鏈結的 o4.__proto__ === p ===》true

o4其實是乙個空物件,並沒有name這個屬性,他是通過原型鏈來鏈結到p 找到name屬性,所以和上面三個不同

物件就是例項 函式的例項都是物件,物件就有__proto__屬性 獲取它的原型物件 函式的原型物件是function的原型 也就是說 m 是function的例項

m.__proto__.constructor=== function ===>true

m.__proto__ === function.prototype ===>true

new 運算子操作的函式 就是建構函式 建構函式可以可以根據prototype 獲取它的例項的原型物件

o3.__proto__=== m.prototype ==>true

任何函式都可以是建構函式,只要用 new 去操作它 ,沒有就是普通函式 函式才有prototype 物件沒有

原型物件可以通過constructor獲取對應的建構函式

m.prototype.constructor === m ==>true

o3 instanceof m ==> true

o3.__proto__.constructor ===m ==>true

object 既是乙個物件 也是乙個建構函式 object.prototype 獲得原型鏈的頂端

o3.__proto__.__proto__===object.prototype ===》true

原型鏈的作用 ,可以給共同原型鏈物件新增方法,其他物件都可以獲得這個方法

m.prototype.say = function () ;o3.say() say hi

o5.say() say hi

o3物件會通過 .__proto__.__proto__去找它的原型鏈物件是否有這個方法如果有則執行 都沒有就報錯

例項 instanceof 建構函式 就是判斷例項.__proto__ === 建構函式.prototype 兩邊得到都是原型物件 看它是否是同乙個引用

instanceof object ==>true

o3.__proto__ ===m.prototype ==>true

m.prototype._proto_ ===object.prototype ==>true

o3.__proto__.__proto__ ===object.prototype ==>true

new運算子

//new 運算子的工作原理

var new2 = function (func) else

驗證 new2 是否和 new 乙個效果

o6 = new2(m);

m o6.__proto__=== m.prototype

true

o6.__proto__.constructor ===m

true

o6 instanceof m

true

弄懂js原型鏈 物件建立

第一種方式 字面量 var o1 var o2 newobject 第二種方式 建構函式 varm function name var o3 newm o3 第三種方式 object.create var p var o4 object.create p m.prototype.say functi...

弄懂js中的原型物件

proto 物件的原型物件 prototype 返回函式的原型物件 constructor 返回建立此物件的陣列函式的引用 instanceof 判斷是不是函式的例項 getprototypeof 返回物件的原型物件 setprototypeof 設定物件的原型物件 object.create 建立...

JS 物件 JS原型 原型鏈

參考學習 js物件 構造器函式 建立物件的函式。物件分為普通物件和函式物件。所有物件都有 proto 屬性 函式物件不止有 proto 屬性,還有prototype屬性 稱為原型物件 1.new function 產生的物件都是函式物件。2.所有函式物件的 proto 都指向function.pro...