如何将所有对象键/值添加到原型中。
例如,如果我有对象
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;
}
但我确信有更好的方法可以做到这一点......
答案 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);