所谓new运算符,即是在JavaScript中,命令构造函数,生成实例对象的“运算符”。其基本的语法是new constructor[(arguments)], 其中constructor表示构造函数,arguments表示对象。
// 构造函数A
function A(name){
this.name = name;
}
//实例化构造函数A
var person = new A();
当代码new A()执行时:
- 一个新的对象被创建出来。这个新对象继承自A.prototype。
- 构造函数中的this,指向了新创建的对象,绑定在this的属性(例如this.name),成为新对象的属性。
- 注意:如果构造函数中,带有return命令返回的对象(或者数组等),return返回的对象会代替刚刚创建的对象,成为new命令的结果。但是这样做在通常的情况下没有意义,所以很少有人这样做。
// 构造函数B function B(x){ this.name = x; return {}; } // 实例化B是,得到的是return的空对象 var b = new B(); // b 的值是 {}
- 实例对象依然可以在运行时,随时添加属性,但是这样做不会影响到,同一构造函数下的其他实例对象。
// 向已经实例好的对象a,追加属性age a.age = 12; var c = new A(); c.age // undefined
- 我们可以通过给构造函数的prototype(原型对象)上添加属性的方式,为所有该构造函数下的实例追加属性。
function Car() {} car1 = new Car() console.log(car1.color) // undefined Car.prototype.color = null console.log(car1.color) // null car1.color = "black" console.log(car1.color) // black