js中new的创建过程做了什么
时间: 2023-04-11 19:01:10 浏览: 93
当使用new关键字创建一个对象时,JavaScript引擎会执行以下步骤:
1. 创建一个新对象。
2. 将新对象的原型设置为构造函数的prototype属性。
3. 将构造函数的this指向新对象。
4. 执行构造函数内部的代码,初始化新对象的属性和方法。
5. 如果构造函数返回一个对象,则返回该对象;否则返回新对象。
这就是JavaScript中使用new关键字创建对象的过程。
相关问题
js中的new都做了什么
当我们在 JavaScript 中使用 `new` 关键字去创建一个新的对象时,它会做以下几个操作:
1. 创建一个空的对象;
2. 将这个空的对象的原型(`__proto__`)属性指向构造函数的原型(`prototype`)对象;
3. 将这个空的对象作为 `this` 关键字传递给构造函数中,执行构造函数中所写的代码,对对象进行初始化,并对 `this` 上的属性和方法进行赋值操作;
4. 如果构造函数中没有显式 return 语句,或者 return 语句返回一个非对象类型值,则返回这个对象。如果有 return 语句并且返回一个对象类型值,则返回这个对象类型值。
总的来说,`new` 关键字主要用于创建一个新的对象,并且在创建过程中自动绑定该对象的原型(`__proto__`)属性到构造函数的原型(`prototype`)属性上,从而实现了对象的继承。
JS new过程发生了什么?
在JavaScript中,使用关键字new创建一个新对象的过程称为new过程。具体发生了以下几个步骤:
1. 创建一个新对象
2. 设置该对象的原型指向构造函数的原型对象
3. 将构造函数的this指向新对象
4. 执行构造函数内部的代码,给新对象添加属性和方法
5. 如果构造函数返回一个对象,则返回该对象,否则返回新对象
例如,以下代码演示了创建一个新对象的过程:
```
function Person(name, age) {
this.name = name;
this.age = age;
}
const person1 = new Person('Alice', 25);
```
在这个例子中,使用new关键字创建了一个新对象person1。在new过程中,Person函数作为构造函数被调用,this指向了新对象person1,执行了函数内部的代码,将属性name和age添加到了person1对象中,并最终返回了新对象person1。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)