夯實基礎之--new關鍵字、instanceOf原理

1.instanceOf原理javascript

 檢測右邊構造函數的prototype是否在左邊對象的原型鏈上,在返回true,不在返回falsejava

例:function  Persion(name,age){函數

    this.name = name;this

               this.age  = age;prototype

  } ; 對象

       let  p  = new  Persion()blog

       console.log( p   instanceOf  Persion )      //trueip

      對象p的原型鏈爲:p.__proto__  ==   Persion.prototype   Persion.prototype .__proto__  ==  Object.prototype   Object.prototype.__proto__ == null原型鏈

 

2.new關鍵字原理原型

 當執行代碼new  Persion()時,會進行如下操做:

  • 建立一個空對象obj
  • 將obj的__proto__指向Persion.prototype
  • 顯示的綁定this,Persion.call(obj,' 'jake', 30)
  • 返回obj(前提是構造函數的返回值不是對象或者函數)

  僞代碼實現以下:

  

let  obj  = {};

obj.__proto__  =  Persion.prototype;

Persion.call(obj, 'jake', 30);

return  obj;
  
相關文章
相關標籤/搜索