我的作业需要帮助。我不知道如何在对象内部创建一个像他想要的那样的方法:
创建一个猴子对象,该对象具有以下属性:名称, 种类,食物进食。
以及以下方法:
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);
答案 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();