无法调用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初学者,只是在尝试。我希望对象的变量数组和搜索函数是外部的。