无法调用javascript中对象内部定义的方法
我定义了一个包含对象和函数数组的对象,并调用了如下方法:无法调用javascript中对象内部定义的方法,javascript,Javascript,我定义了一个包含对象和函数数组的对象,并调用了如下方法: var-Person={ 人民:[{ 姓名:“Max”, 年龄:41岁, }, { 姓名:“约翰”, 年龄:25岁, }, { 名称:“能源部”, 年龄:67, }, ], 问候语:函数(){ return“你好,我的名字是”+“”+this.name; } }; 函数searchByName(namePerson){ var result=Person.people.find(Obj=>Obj.name==namePerson); 返
var-Person={
人民:[{
姓名:“Max”,
年龄:41岁,
},
{
姓名:“约翰”,
年龄:25岁,
},
{
名称:“能源部”,
年龄:67,
},
],
问候语:函数(){
return“你好,我的名字是”+“”+this.name;
}
};
函数searchByName(namePerson){
var result=Person.people.find(Obj=>Obj.name==namePerson);
返回结果;
}
var max=searchByName('max');
最大问候语()代码>您的代码没有多大意义,您的问候语
函数位于外部Person对象上,但您使用它时,就好像它是数组中每个人的属性一样
您需要persons的构造函数,以便可以使用问候语方法实例化三个Person
s
职能人员(姓名、年龄){
this.name=名称;
这个。年龄=年龄;
}
Person.prototype.greeting=函数(){
return“你好,我的名字是”+this.name+“我是”+this.age+“岁”;
}
康斯特人=[
新人(“Max”,41岁),
新人(“约翰”,25岁),
新人(“Doe”,67岁),
];
函数searchByName(namePerson){
var result=people.find(obj=>obj.name==namePerson);
返回结果;
}
var max=searchByName('max');
console.log(max.greeting())代码>您可以将Person更改为一个实际的类,您可以使用newPerson()实例化该类。
//创建person类
职能人员(人){
this.name=person.name;
this.age=person.age;
}
//将问候语方法添加到person类
Person.prototype.greeting=函数(){
return“你好,我的名字是”+“”+this.name;
};
//建设你的人民
var people=[
新人({姓名:“Max”,年龄:41}),
新人({姓名:“约翰”,年龄:25}),
新人({姓名:“Doe”,年龄:67})
];
函数searchByName(namePerson){
var result=people.find(person=>person.name==namePerson);
返回结果;
}
var max=searchByName('max');
console.log(max.greeting())代码>您正在返回一个没有问候功能的对象
一个潜在的不同的解决方案,有一点不同的结构是这样的
职能人员(姓名、年龄){
this.name=名称;
这个。年龄=年龄;
}
Person.prototype.greeting=函数(){
return“你好,我的名字是”+this.name;
}
职能人员(personArr){
这个人=人;
}
People.prototype.searchByName=函数(名称){
返回this.people.find(person=>person.name==name);
}
var people=新人([新人(“Max”,41),新人(“John”,25),新人(“Doe”,67)];
var max=people.searchByName(“max”);
console.log(max.greeting())代码>var max中有什么内容??person类的对象??你的greting
函数是person
对象的成员,而不是底层people
的成员。你的对象没有意义,为什么person
包含一群oh people?person真的是一个类吗?谢谢你的回答,这似乎有效。我是一个javascript初学者,只是在尝试。我希望对象的变量数组和搜索函数是外部的。