JavaScript对象构造函数返回属性

时间:2015-07-09 13:27:14

标签: javascript coding-style

我只想问一下创建JavaScript对象模型Constructors样式的优点是什么样的

var PersonTemplate = function () {
    return {
        recordId: 0,
        username: '',
        firstName: '',
        lastName: ''
    }
}

1 个答案:

答案 0 :(得分:0)

通过返回一个明确定义的对象,您正在破坏原生于JavaScript的“开箱即用”的原型继承链。下面是一个使用构造函数实例化从原型继承的新对象的规范示例...

function PersonTemplate(firstName, lastName) {
    this.firstName = firstName;
    this.lastName  = lastName;
}

从这里我们可以在PersonTemplate的{​​{1}}上添加方法,利用原型链。

protoype

现在,如果我们通过上面的示例尝试利用原型继承(假设PersonTemplate.prototype.sayHello = function() { return 'Hello, my name is ' + this.firstName + '!'; } var john = new PersonTemplate('John', 'Smith'); john.sayHello(); // => "Hello, my name is John!" 仍然添加到sayHello,那么结果就是......

PersonTemplate.prototype

通过显式返回构造函数中的对象文字,该链接被破坏,您不再通过原型链使用“经典”面向对象的JavaScript。

这并不是说如果要扩展这一点并将一种新颖的继承技术结合在一起,就没有可能的深奥和复杂的优势。毕竟,有各种创造性的方法来组合和链接对象(例如Kyle Simpson here OLOO 风格,但这是为了进行更大的讨论。