今天我们要来说一个在JavaScript中非常重要的概念,那就是函数的new操作符。当我们创建一个函数时,我们可以通过new操作符来创建一个对象类型的实例。这个对象的类型就是我们在函数中定义的构造函数的类型。
function Person(name, age) { this.name = name; this.age = age; }
有了上面的例子,我们就可以使用new操作符来创建一个Person对象的实例:
var person1 = new Person("Tom", 20);
这样我们就可以访问person1对象的属性:
alert(person1.name + "," + person1.age);
使用new操作符的时候,JavaScript会创建一个新的空对象,并用构造函数中指定的参数来初始化它。接着,JavaScript会把新创建的对象赋值给指定的变量,这样我们就可以通过变量来访问新创建的对象了。
使用new操作符创建的对象有一个非常重要的属性,那就是它的原型属性。每一个JavaScript对象都有一个原型属性,这个属性指向了它的原型对象。原型对象的属性和方法会被所有的对象实例所共享。
Person.prototype.show = function() { console.log(this.name + "," + this.age); } person1.show(); // Tom,20
在上面的例子中,我们向Person构造函数的原型对象中添加了一个show方法。接着,我们通过person1实例来调用这个方法。因为person1的原型指向了Person构造函数的原型对象,所以它可以访问到这个对象的属性和方法。
使用new操作符的时候,JavaScript还会为新创建的对象指定一个constructor属性。这个属性指向了它的构造函数。
console.log(person1.constructor === Person); // true
通过访问person1的constructor属性,我们可以判断它的对象类型到底是什么。
除了使用new操作符,JavaScript还提供了另一个Object.create方法来创建对象。这个方法可以直接指定新创建的对象的原型。但Object.create方法对于IE9之前的版本不兼容,而new操作符则可以兼容于所有的浏览器。因此,我们在实际的开发中还是应该优先选择使用new操作符来创建对象。
var obj = Object.create(Person.prototype);
使用Object.create方法来创建对象时,我们可以直接指定新创建的对象的原型为Person构造函数的原型对象。
在JavaScript中,函数有着非常重要的地位。函数的new操作符为我们提供了一种非常方便的方式来创建对象类型的实例。通过定义构造函数和它的原型对象,我们可以非常容易地创建出一个完整的对象类型,并访问它的属性和方法。在实际的开发中,我们应该熟练掌握函数的new操作符,并合理应用它来提高我们的代码效率和质量。