创建对象时 new操作符做了什么

在 JavaScript 中,使用 new 操作符创建对象时,实际上进行了以下几个步骤:

  1. 创建一个新的空对象。
  2. 将这个空对象的原型指向构造函数的原型(prototype)。
  3. 执行构造函数,将 this 指向这个新创建的对象。
  4. 如果构造函数有返回值且返回值是对象,则返回该对象;否则返回创建的新对象。

下面我们通过代码来详细说明 new 操作符的作用:

        假设有一个构造函数 Person

function Person(name, age) {
    this.name = name;
    this.age = age;
}

        现在我们使用 new 操作符来创建一个 Person 对象:

const person1 = new Person('Alice', 30);

在这个过程中发生了以下步骤:

  1. 创建一个空对象 person1
  2. 将 person1 的原型指向 Person 构造函数的原型:
    person1.__proto__ === Person.prototype; // true
    
  3. 执行 Person 构造函数,将 this 指向 person1,并设置属性:
    person1.name; // 'Alice'
    person1.age; // 30
    
  4. 如果构造函数有返回值且返回值是对象,则返回该对象;否则返回创建的新对象。如果构造函数中有 return 语句返回一个对象,那么返回的是该对象;如果没有返回值或者返回的不是对象,则返回创建的新对象。
    function Person(name, age) {
        this.name = name;
        this.age = age;
        return { message: 'This is a returned object' };
    }
    
    const person2 = new Person('Bob', 25);
    console.log(person2); // { message: 'This is a returned object' }
    

        通过以上步骤,使用 new 操作符可以实例化一个对象,并且确保构造函数中的属性和方法正确地被应用到新创建的对象上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值