首页 > 解决方案 > 无法调用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();

我的函数定义有问题吗?在运行它说“问候”不是一个功能。

标签: javascript

解决方案


您的代码没有多大意义,您的greeting函数位于外部 Person 对象上,但您正在使用它,就好像它是数组内每个人的属性一样。

你需要一个 Person 的构造函数,这样你就可以用一个方法实例化三个Personsgreeting

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());


推荐阅读