javascript - 无法调用javascript中对象内部定义的方法
问题描述
我已经定义了一个包含对象和函数数组的对象,并调用了如下方法:
var Person = {
people: [{
name: "Max",
age: 41,
},
{
name: "John",
age: 25,
},
{
name: "Doe",
age: 67,
},
],
greeting: function() {
return "Hello, my name is" + " " + this.name;
}
};
function searchByName(namePerson) {
var result = Person.people.find(Obj => Obj.name === namePerson);
return result;
}
var max = searchByName('Max');
max.greeting();
我的函数定义有问题吗?在运行它说“问候”不是一个功能。
解决方案
您的代码没有多大意义,您的greeting
函数位于外部 Person 对象上,但您正在使用它,就好像它是数组内每个人的属性一样。
你需要一个 Person 的构造函数,这样你就可以用一个方法实例化三个Person
sgreeting
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greeting = function() {
return "Hello, my name is " + this.name + " and I am " + this.age + " years old";
}
const people = [
new Person("Max", 41),
new Person("JOhn", 25),
new Person("Doe", 67),
];
function searchByName(namePerson) {
var result = people.find(obj => obj.name === namePerson);
return result;
}
var max = searchByName('Max');
console.log(max.greeting());
推荐阅读
- c - printf在C中具有多个指针作为参数
- python - 为什么在此示例 python 中将字符串添加为字符?
- powershell - 计算文件中的日期条目。- 电源外壳
- javascript - Array.sort 按对象键/值的字母顺序
- html - 下载页面菜单实时更新 HTML 和 Bootstrap
- node.js - 是否可以使用 Azure Key Vault 的 Keys API 创建 JSON Web 令牌?
- .net - 如何获得 IBM DB2 for iSeries 的数据提供者?
- reactjs - 如何使用 useRef 在图像之间切换
- swift - Swift枚举自定义原始类型不能用不同的文字表达
- php - 如何在laravel中查询只有字母数字值的行?