码迷,mamicode.com
首页 > 其他好文 > 详细

实现一个new操作符

时间:2019-12-07 12:34:28      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:return   ror   对象引用   pre   引用   lan   一个   erro   ref   

new 操作符做了这些事:

1.它创建了一个全新的对象;

2.它会被执行[[Prototype]](也就是__proto__)链接;

3.它使this指向新创建的对象;

4.通过new创建的每个对象最终被[[Prototype]]链接到这个函数的prototype对象上;

5.如果函数没有返回对象类型Object(包含Function, Array, Date, RegExg, Error),那么new 表达式中的函数调用将返回该对象引用。

function New(func) {
    var res = {};
    if (func.prototype !== null) {
        res.__proto__ = func.prototype;
    }
    var ret = func.apply(res, Array.prototype.slice.call(arguments, 1));
    if ((typeof ret === ‘object‘ || typeof ret === ‘function‘) && ret !== null) {
        return ret;
    }
    return res;
}

var obj = New(A, 1, 2);
// equals to
var obj = new A(1, 2);

 

转自:实现一个new操作符

实现一个new操作符

标签:return   ror   对象引用   pre   引用   lan   一个   erro   ref   

原文地址:https://www.cnblogs.com/garfieldzhong/p/12001209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!