添加proto但保留对象结构,javascript
假设我从一个API中得到:添加proto但保留对象结构,javascript,javascript,prototype,Javascript,Prototype,假设我从一个API中得到: var _persons = [ { name: 'John' }, { name: 'Sarah' } ]; 现在我想添加一个问候功能。我想保存memoryspace,因此我创建了一个个人“类”,并将该函数添加为proto function Person(person){ this.person = person; } Person.prototype.greeting = function(){ return 'hell
var _persons = [
{
name: 'John'
},
{
name: 'Sarah'
}
];
现在我想添加一个问候功能。我想保存memoryspace,因此我创建了一个个人“类”
,并将该函数添加为proto
function Person(person){
this.person = person;
}
Person.prototype.greeting = function(){
return 'hello ' + this.person.name
};
我举例说明每个人:
var persons = [];
function createPersons(people){
for(var i = 0;i<people.length;i++){
var person = new Person(people[i]);
persons.push(person);
}
};
createPersons(_persons);
我是否可以让第一个console.log正常工作
循环遍历对象参数中的所有键,并将它们分配给
此
function Person(person){
for (var key in person) {
this[key] = person[key];
}
}
var persons=[];
功能创建人(人){
对于(var i=0;i要避免对象中出现.person
,需要将源普通对象的每个属性直接复制到person
对象中:
function Person(p) {
this.name = p.name;
...
}
[如果有大量键,则使用循环]
然后,命名参数与在createPersons
函数中迭代的变量不匹配。此外,让该函数返回列表,而不是设置外部作用域的变量更有意义:
function createPersons(people) {
return people.map(function(p) {
return new Person(p);
});
}
var persons = createPersons(_persons);
注意:上面使用了Array.prototype.map
,这是通过回调从源数组生成新数组的规范函数。您正在创建一个Person
对象,该对象被赋予一个变量Person
。您需要通过替换
var person = new Person(people[i]);
与
var\u个人=[
{
名字:“约翰”
},
{
名字:“莎拉”
}
];
职能人员(人){
这个人=人;
}
Person.prototype.greeting=函数(){
返回“hello”+this.person.name;
};
var人员=[];
功能创建人(人){
对于(var i=0;i您正在使用people
作为传递的参数名,但正在迭代\u peoples
。。。
function createPersons(people) {
return people.map(function(p) {
return new Person(p);
});
}
var persons = createPersons(_persons);
var person = new Person(people[i]);
var person = new Person(people[i]).person;