JavaScript对象构造函数返回属性

用户474901

我只想问一下创建JavaScript对象模型的构造方法的优点是什么?

var PersonTemplate = function () {
    return {
        recordId: 0,
        username: '',
        firstName: '',
        lastName: ''
    }
}
瑞格布克里斯

通过返回明确定义的对象,您将打破JavaScript固有的“即用型”原型继承链。以下是使用构造函数实例化从原型继承的新对象的典型示例...

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

从这里我们可以添加方法上PersonTemplateprotoype,利用该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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从构造函数中的函数返回对象属性?

从构造函数返回对象

无法从JavaScript函数返回对象的属性

JavaScript中的对象属性名称与构造函数参数

Javascript:“对象属性”实例的空构造函数名称

返回对象属性的函数

使用构造函数创建对象并使用javascript返回完成的对象的函数

匿名对象的javascript构造函数

Javascript构造函数-使用对象?

Javascript原型对象构造函数

如何使用javascript访问从函数返回的对象的属性?

通过返回字符串的函数的Javascript动态对象属性

用于搜索对象属性和返回值的javascript函数

为什么构造函数会返回对象,而不返回JavaScript中的基元?

如果未找到对象的属性(Obj构造函数),则返回值为Not undefined。为什么?

尝试在构造函数中设置类属性时,用户对象返回空

在Javascript中,为什么从构造函数返回函数会破坏对象?

JavaScript函数将具有相同属性的构造函数对象推入数组

从构造函数返回独立值,而不是对象

构造函数返回对象是否正确?

构造函数返回对象-文档澄清吗?

构造函数可以返回空对象吗?

返回“链接”对象时移动构造函数

从构造函数返回的对象没有原型

类构造函数或静态对象返回方法?

Java对象构造函数返回“ null”

对象的构造函数属性的奇怪行为

对象构造函数作为Javascript中的函数

函数的原型属性如何影响对象的构造函数属性?