Constructor(构造器) 模式
在经典面向对象编程语言中,Constructor是一种在内存已分配给该对象的情况下,用于初始化新创建对象的特殊方法。在javaScript中,几乎所有的东西都是对象,我们通常最感兴趣的就是object构造器。
对象创建
在JavaScript中创建对象有两种方式:
1 | // 下面每种方式都将创建一个新的对象。 |
有四种方法可以将键值赋值给一个对象
1 | // ECMAScript 3 兼容方式 |
这些方法是可以用于继承的,如下所示:
1 | // 用法 |
基本Constructor(构造器)
JavaScript 不支持类的概念,但它确实支持与对象一起用的特殊constructor(构造器)函数。通过在构造器前面加 new 关键字,告诉JavaScript像使用构造器一样实例化一个新对象,并且对象成员由该函数定义。
在构造器内,关键字this引用新创建的对象。
1 | function Car(model, year, miles) { |
上面是一个简单的构造器模式版本,但是它有一些问题,其中一个问题就是,它使继承变的很困难,另一个问题是,同String() 这样的函数是为每个使用Car构造器创建的新对象而分别重新定义的。这不是最理想的,因为这种函数因该在素有的Car类型实例之间共享。
带原型的 Constructor(构造器)
Javascript中有一个名为 prototype 的属性。调用JavaScript构造器创建一个对象后,新对象就会具有构造器原型的所有属性。通过这种方式,可以创建多个Car对象,并访问相同的原型。
1 | function Car(model, year, miles) { |
现在toString()的单一实例就能够在所有Car对象之间共享。