zoukankan      html  css  js  c++  java
  • 夯实基础之--new关键字、instanceOf原理

    1.instanceOf原理

     检测右边构造函数的prototype是否在左边对象的原型链上,在返回true,不在返回false

    例:function  Persion(name,age){

        this.name = name;

                   this.age  = age;

      } ; 

           let  p  = new  Persion()

           console.log( p   instanceOf  Persion )      //true

          对象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;
      
    

      

  • 相关阅读:
    路飞项目五
    路飞项目四
    路飞项目三
    路飞项目二
    基本数据类型之集合和字符编码
    3.11 作业
    基本数据类型内置方法
    3.10 作业
    流程控制之for循环、基本数据类型及其内置方法
    3.9 作业
  • 原文地址:https://www.cnblogs.com/zifayin/p/10734862.html
Copyright © 2011-2022 走看看