我只想问一下创建JavaScript对象模型Constructors样式的优点是什么样的
var PersonTemplate = function () {
return {
recordId: 0,
username: '',
firstName: '',
lastName: ''
}
}
答案 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 风格,但这是为了进行更大的讨论。