【问题标题】:When it's better to add a property directly to an object in JavaScript? [duplicate]什么时候最好将属性直接添加到 JavaScript 中的对象? [复制]
【发布时间】:2017-05-18 20:56:02
【问题描述】:

假设我们正在定义一个 Person 构造函数并像这样创建一个新人:

function Person(name){
    this.name = name;
}
var person = new Person("John Doe");

以下 2 个实现输出:来自 John Doe 的Hello

第一次实施

person.sayHello = function(){console.log("Hello from " + this.name);}

运行代码1

function Person(name){this.name = name;}
var person = new Person("John Doe");
person.sayHello = function(){console.log("Hello from " + this.name);}
person.sayHello();

第二次实施

Person.prototype.sayHello = function(){console.log("Hello from " + this.name);}

运行代码2

function Person(name){this.name = name;}
var person = new Person("John Doe");
Person.prototype.sayHello = function(){console.log("Hello from " + this.name);}
person.sayHello();

我的问题是:

  1. 由于结果相似,什么时候最好将属性直接添加到创建的对象中?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    简单来说,使用对象的prototype 用于在创建对象后扩展对象属性。最好的用例之一是,当类不是由您编写或从某个地方导入时,您需要对其进行扩展。

    这两种实现是否相似(我说的不是结果,而是副作用)?

    AFAIK,它是一样的。

    如果不是,有什么区别,什么时候应该选择第一个还是第二个?

    可以,但是什么时候用,见上文。

    【讨论】:

    • 感谢您的回答。我正在寻找的是了解何时最好将属性直接添加到 JavaScript 中的对象?
    • @AlaEddineJEBALI 请查看链接的副本。它解释了更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2023-03-19
    • 2011-06-10
    • 2015-11-24
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多