目录
介绍
new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。
new 关键字的操作
new 关键字会进行如下操作:
1. 创建一个空的简单 JavaScript 对象(即 {} );
2. 为步骤 1 新创建的对象添加属性 _ _proto_ _ ,将该属性链接至构造函数的原型对象;
3.将步骤 1 新创建的对象作为 this 的上下文;
4. 如果该函数没有返回对象,则返回 this。
返回对象说明
如果返回了对象,
返回的对象的类型是 Object 时,返回 undefined;
返回的对象的类型是 function 时,返回 函数名;
返回的对象的类型是 Array 时,返回 undefined;
返回的对象的类型是 基本类型 时,返回 this;
其他说明
如果使用构造函数创建对象没有使用 new 运算符时,构造函数会像其他的常规函数一样被调用,并不会创建一个对象。在这种情况下,this 指向也是不一样的。
例:
function Person(name, age) {
this.name = name;
this.age = age;
this.sayname = function () {
console.log(this.name);
console.log(this);
};
}
var p1 = new Person('jack', 13); // 使用 new 运算符
console.log(p1); // Person{}
console.log(p1.name, p1.age); // jack 13
p1.sayname(); // jack Person{}
var p2 = Person('tom', 10); // 不使用 new 运算符
window.sayname(); // tom window
console.log(this.name, this.age); // tom 10
console.log(window.name, window.age); // tom 10
console.log(p2); // undefined
// console.log(p2.name, p2.age); // 报错
// p2.sayname(); // 报错
本文详细介绍了JavaScript中的new运算符,包括它的四个操作步骤:创建空对象、设置_prototype_、绑定this上下文及返回对象的规则。同时,强调了未使用new调用构造函数的后果和this指向的变化。

7291

被折叠的 条评论
为什么被折叠?



