如何将对象键添加到原型?

时间:2018-01-05 01:28:05

标签: javascript

如何将所有对象键/值添加到原型中。

例如,如果我有对象

var serverResponse = {
    foo: 'bar'
    id: 123
    name: 'Rick Sanchez'
}

我想将每个键添加到Person的原型中。我可以手动为每个键执行此操作。

function Person(serverResponse) {
    this.foo = serverResponse.foo;
    this.id = serverResponse.id;
    this.name = serverResponse.name;
}

但我确信有更好的方法可以做到这一点......

2 个答案:

答案 0 :(得分:3)

我认为您不希望将其添加到Person的原型中,因为这样可以在serverResponse的每个实例上使用它(似乎Person包含特定的变量某个实例,而不是serverResponse的所有实例 - 这很可能只是问题标题的术语问题)。

话虽这么说,我一直这样做 - 我将一个通用的JS对象(比如你的Person)传递给我的一个类的构造函数(比如function Person(serverResponse) { this.serverResponse = serverResponse; } Person.prototype.getFoo = function() { return this.serverResponse.foo; }; Person.prototype.getId = function() { return this.serverResponse.id; }; ... )并将其保存为实例变量。然后我在原型上创建存取方法,如下所示:

0. == 0

答案 1 :(得分:1)

听起来你并不想添加原型,而是复制所有属性。这可以在Object.assign的现代浏览器中完成(可以在古代浏览器中使用polyfill引入):

function Person(serverResponse) {
  Object.assign(this, serverResponse);
}

...当然,您必须相信serverResponse没有您不想要的数据。如果您确实想要分配原型,您也可以在原型上使用Object.assign

Object.assign(Person.prototype, serverResponse);