我如何在对象内部制作方法

时间:2019-02-10 18:28:13

标签: javascript object methods

我的作业需要帮助。我不知道如何在对象内部创建一个像他想要的那样的方法:

  

创建一个猴子对象,该对象具有以下属性:名称,   种类,食物进食。

     

以及以下方法:

     

eatSomething(thingAsString)

     

介绍:生产者介绍自己的字符串,包括其名称,   种类及其食用方式。

     

-共创建3只猴子。确保所有3只猴子都设置了所有属性并定义了方法。

我已经创建了具有其属性的Monkey对象:

function Monkey(name, species, foodsEaten) {
    this.name = name;
    this.species = species;
    this.foodsEaten = foodsEaten;
}

let monkey01 = new Monkey(chimp, chimpanzee, honey);
let monkey02 = new Monkey(gibb, gibbon, apple);
let monkey03 = new Monkey(babo, babbon, banana);

3 个答案:

答案 0 :(得分:3)

通常的做法是在Monkey原型上添加一个函数。这将允许所有实例共享相同的功能。在函数中,您可以使用this引用实例(假设您从实例中调用monkey01.eatsomething())。

在这里,我们将foodsEaten组成一个数组,以便您可以跟踪多个数组。然后,该方法仅压入this.foodsEaten

function Monkey(name, species, foodsEaten) {
  this.name = name;
  this.species = species;
  this.foodsEaten = [...foodsEaten];  // make a copy so you don't mutate the passed in array.

}

Monkey.prototype.eatsomething = function(foodString) {
  this.foodsEaten.push(foodString)
}

let monkey01 = new Monkey('chimp', 'chimpanzee', ['honey']);

monkey01.eatsomething("bananna")

// now it's eatne more food
console.log(monkey01.foodsEaten)

对于其他方法,只需执行更多相同的操作即可。

答案 1 :(得分:0)

您可以将公共方法附加到JS函数上,就像分配变量一样。

function Monkey(name, species, foodsEaten) {
  this.name = name;
  this.species = species;
  this.foodsEaten = foodsEaten;
  this.doSomething = function (thing) {
    console.log('do something with', thing);
  }
}

let monkey01 = new Monkey('chimp', 'chimpanzee', 'honey');

monkey01.doSomething('banana');

答案 2 :(得分:0)

这是一个函数,而不是对象。但是假设这就是您想要的,则可以使用下面的代码。

function Monkey(name, species, foodsEaten) {
  this.name = name;
  this.species = species;
  this.foodsEaten = foodsEaten;
  this.eatSomething = function() {
    console.log(`I am ${name}. I am part of the ${species} species, and have eaten ${foodsEaten}`);
  }


}

let monkey01 = new Monkey("chimp", "chimpanzee", "honey");


let monkey02 = new Monkey("gibb", "gibbon", "apple");


let monkey03 = new Monkey("babo", "babbon", "banana");

monkey01.eatSomething();