JavaScript基础(三)——new运算符

new()到底做了什么

MDN关于new是这么说的——new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例
  • 上代码,new()的简单实例应用

    function Animal (name, age){
        this.name = name;
        this.age = age;
    }
    Animal.prototype.id = '1'
    let cat = new Animal('cat',1);
    console.log(cat.name); // 'cat'
    console.log(cat.id)  //1
    
  • new的实际应用很简单,这里探究一下new操作符实际上干了什么

    说人话也就是

    • 创建一个空的简单JavaScript对象(即{})
    • 链接该对象(即设置该对象的构造函数)到另一个对象(son.__proto __ = father.prototype)
    • 将创建的空对象作为this的上下文
    • 如果该函数没有返回对象,则返回this
  • 自己来写一个_new函数~

    function _New(){
    	// 创建空对象
        const obj = {}; 
        // 截取到constructor参数
        Constructor = Array.prototype.shift.call(arguments);
        // 链接到该对象(obj)
        obj.__proto__ = Constructor.prototype;
        // 使用apply,改变构造函数的this指向,使其指向新对象
        let result = Constructor.apply(obj, arguments)
        // 判断类型,返回对象
        return result instanceof Object ? result : obj
    }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值