new运算符工作原理(new运算符的伪码实现)

Posted zhangchs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new运算符工作原理(new运算符的伪码实现)相关的知识,希望对你有一定的参考价值。

// 只要函数创建,就有一个prototype属性
// 构造函数和普通函数的区别就是调用的时候又没有用 new function Fn()
  // this 就是实例化后的对象 三段式 var this = __proto__: Fn.prototype ; this.XXX = XXX; return this;
// 原型
Fn.prototype =
  // 浏览器自带
  constructor: Fn()  // 构造函数
__proto__:Object
; 

obj->Fn.prototype->Object.prototype->null

  

//new运算符的伪码实现  
function _new(clazz, args)  
    //clone(clazz.prototype)  
    var this = ;  
    this.__proto__ = clazz.prototype;  
    var obj  = clazz.apply(this, args);  
    var type = typeof obj;  
    if(type == "object" && obj !== null || type == "function")  
        return obj;  
    else  
        return this;  
      
    /* 另一种写法 
    if(obj === null || type == "undefined" || type == "boolean" || type == "number" || type == "string") 
        return this; 
    else 
        return obj; 
     
    */  
  
var a = new ClassA(1,2);  
var a = _new(ClassA, [1,2]);  //伪码    

来源:https://wmingjian.iteye.com/blog/1881658

  create read update delete

  create select update delete

  

以上是关于new运算符工作原理(new运算符的伪码实现)的主要内容,如果未能解决你的问题,请参考以下文章

JS原型链--new运算符的原理

javascript中new运算符

《JavaScript》探索new运算符到底干了啥

定位new函数的使用

c++ primer19.1.1重载new和delete

java中用new运算符新申请建立一个对象的时候返回值是啥?