一、new
在JavaScript中,new事一个关键字,用于创建实例对象,通常与构造函数一起使用,表示要实例化一个对象
二、new过程包含的主要步骤
- 创建一个新的空对象。
- 将构造函数的作用域赋给新对象,使
this关键字指向这个新对象。 - 执行构造函数内部的代码,进行对象的初始化和属性赋值等操作。
- 如果构造函数内部没有显式返回其他对象,则隐式返回刚刚创建的新对象;如果构造函数内部有显式返回其他对象,则返回这个对象。
三、示例
1、当构造函数没有显示返回其他对象
function Person(name, age) {
// 步骤2:this 指向新对象
// 步骤3:对新对象进行初始化
this.name = name;
this.age = age;
}
// 使用 new 关键字创建实例
const person1 = new Person('John', 30);
console.log(person1); // { name: 'John', age: 30 }
示例中,首先创建新的Person对象,并通过this将值负值给对象,完成新对象的初始化,在Person中,可以看见,并没有显示的返回一个指定的对象,所以此处会返回刚才创建的新对象,即person对象{ name:'John' , age : '30' };
2、显示的返回一个新的对象
function Person(name, age) {
this.name = name;
this.age = age;
return { custom: 'Custom Object' };
}
const person1 = new Person('John', 30);
console.log(person1); // { custom: 'Custom Object' }
可以看见,Person 构造函数内部创建了一个新对象并为其添加属性,但由于构造函数显式返回了一个不同的对象,因此 person1 最终的值是这个返回的对象,而不是构造函数内部创建的对象。