我只想问一下创建JavaScript对象模型的构造方法的优点是什么?
var PersonTemplate = function () {
return {
recordId: 0,
username: '',
firstName: '',
lastName: ''
}
}
通过返回明确定义的对象,您将打破JavaScript固有的“即用型”原型继承链。以下是使用构造函数实例化从原型继承的新对象的典型示例...
function PersonTemplate(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
从这里我们可以添加方法上PersonTemplate
的protoype
,利用该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
,这将是结果...
var PersonTemplate = function() {
return {
firstName: '',
lastName: ''
}
}
var john = new PersonTemplate('John', 'Smith');
john.sayHello(); // => Uncaught TypeError: john.sayHello is not a function
通过从构造函数中显式返回对象文字,链接将中断,并且您不再通过原型链使用“经典的”面向对象的JavaScript。
这并不是说,如果有人对此加以扩展并结合一种新颖的继承技术,就不会有深奥而复杂的优势。毕竟,还有各种创造性的方式来撰写和链接的对象在一起(例如0100凯尔·辛普森的风格在这里,但这是一个更大的讨论。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句