JS中 new操作符具体干了什么?
时间: 2023-11-19 19:06:27 浏览: 152
在JS中,使用new操作符可以创建一个对象实例。new操作符具体干了以下几件事情:
1. 创建一个空对象。
2. 将这个空对象的原型指向构造函数的原型。
3. 将构造函数的this指向这个空对象。
4. 执行构造函数内部的代码。
5. 如果构造函数返回一个对象,则返回这个对象;否则返回创建的空对象。
例如,在下面的代码中,使用new操作符创建了一个Person对象实例:
```
function Person(name, age) {
this.name = name;
this.age = age;
}
var person = new Person('Tom', 18);
```
在这个例子中,使用new操作符创建了一个Person对象实例。new操作符将Person函数作为构造函数来使用,创建了一个空对象,并将这个空对象的原型指向Person函数的原型。然后,执行Person函数内部的代码,将this指向这个空对象,并在空对象上添加了name和age属性。最后,返回这个创建的对象实例。
相关问题
4.new 操作符具体干了什么呢?
"new" 操作符在 JavaScript 中用于创建一个对象的实例。它通过以下步骤实现这一点:
1. 创建一个空的、带有构造函数的对象。
2. 将该对象的原型指向构造函数的 prototype 属性。
3. 将 this 关键字绑定到新创建的对象上。
4. 执行构造函数中的代码(如果存在)。
5. 返回新创建的对象。
具体来说,可以这样使用 "new" 操作符:
```
var obj = new Object();
```
或者:
```
function Person(name, age) {
this.name = name;
this.age = age;
}
var p1 = new Person("John", 30);
```
在这个例子中,我们定义了一个名为 "Person" 的构造函数,并使用 "new" 操作符创建了一个名为 "p1" 的对象实例。
js中new操作符的具体实现
在JavaScript中,`new`操作符用于创建一个新的对象实例。其实现过程如下:
1. 创建一个新对象,该对象继承自构造函数的`prototype`属性。
2. 将构造函数的`this`绑定到新对象上,并调用该函数。
3. 如果构造函数返回一个对象,则返回该对象;否则返回新创建的对象。
下面是一个简单的例子,演示了`new`操作符的实现过程:
```javascript
function myNew(constructor, ...args) {
// 创建一个新对象,该对象继承自构造函数的 prototype 属性
const obj = Object.create(constructor.prototype);
// 将构造函数的 this 绑定到新对象上,并调用该函数
const result = constructor.apply(obj, args);
// 如果构造函数返回一个对象,则返回该对象;否则返回新创建的对象
return result instanceof Object ? result : obj;
}
// 测试
function Person(name, age) {
this.name = name;
this.age = age;
}
const person1 = new Person('Tom', 18);
const person2 = myNew(Person, 'Jerry', 20);
console.log(person1); // Person { name: 'Tom', age: 18 }
console.log(person2); // Person { name: 'Jerry', age: 20 }
```
阅读全文