手写new

回想我们平时怎么使用new的

        function Person(age){
            this.age = age;
        }
        let person = new Person(10);

可见new 接受的是一个构造函数。

总结下new的执行过程:

  1. 创建一个空对象。
  2. 进行原型连接,
  3. 调用我们的构造函数,并将该构造函数的this指定为我们创建的空对象。
  4. 如果我们的构造函数没有返回值,那么我们就返回我们创建的这个对象,否则就返回构造函数所返回的结果。
        let _new = function(constroctor,...param){
            let obj = {};
            obj.__proto__=constroctor.prototype;
            let result = constroctor.apply(obj,param);
            return result instanceof Object?result:obj;
        }


        function Person(age){
            this.age = age;
        }
        let p1 = _new(Person,10);
        console.log(p1);
        
        //Person {age: 10}
        //age: 10
        //__proto__:
        // constructor: ƒ Person(age)
         //__proto__: Object
    
        

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值