其他分享
首页 > 其他分享> > ew运算符工作原理(new运算符的伪码实现)

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

作者:互联网

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

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]);  //伪码  

  

标签:obj,运算符,var,new,ew,prototype,type,Fn
来源: https://www.cnblogs.com/zhangchs/p/11067664.html