Javascript 如何在对象内部创建方法

Javascript 如何在对象内部创建方法,javascript,object,methods,Javascript,Object,Methods,我的家庭作业需要帮助。我不知道如何在对象内部创建他想要的方法: 创建一个monkey对象,该对象具有以下属性:名称, 种类,食物 以及以下方法: 吃东西(东西串) 介绍:一个字符串介绍它自己,包括它的名称, 种类和吃的东西 -总共创造3只猴子。确保所有3只猴子都设置了所有属性并定义了所有方法 我已经创建了monkey对象及其属性: function Monkey(name, species, foodsEaten) { this.name = name; this.species

我的家庭作业需要帮助。我不知道如何在对象内部创建他想要的方法:

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

以及以下方法:

吃东西(东西串)

介绍:一个字符串介绍它自己,包括它的名称, 种类和吃的东西

-总共创造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);

可以使用与分配变量类似的方式将公共方法附加到JS函数

功能猴(名称、种类、食物){
this.name=名称;
这个物种=物种;
this.foodseed=foodseed;
this.doSomething=功能(事物){
log('dosomething',thing);
}
}
让monkey01=新猴子(“黑猩猩”、“黑猩猩”、“蜂蜜”);

monkey01.doSomething(“香蕉”)您可以使用与分配变量类似的方式将公共方法附加到JS函数

功能猴(名称、种类、食物){
this.name=名称;
这个物种=物种;
this.foodseed=foodseed;
this.doSomething=功能(事物){
log('dosomething',thing);
}
}
让monkey01=新猴子(“黑猩猩”、“黑猩猩”、“蜂蜜”);

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

在这里,我们将
foodseat
作为一个数组,这样您就可以跟踪多个。然后,该方法只需将此.foodseat推入

功能猴(名称、种类、食物){
this.name=名称;
这个物种=物种;
this.foodseat=[…foodseat];//制作一个副本,这样就不会对传入的数组进行变异。
}
Monkey.prototype.eatsomething=函数(foodString){
此.foodseed.push(foodString)
}
让monkey01=新猴子(“黑猩猩”、“黑猩猩”、“蜂蜜”);
monkey01.吃东西(“班纳纳”)
//现在该吃更多的食物了

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

在这里,我们将
foodseat
作为一个数组,这样您就可以跟踪多个。然后,该方法只需将此.foodseat推入

功能猴(名称、种类、食物){
this.name=名称;
这个物种=物种;
this.foodseat=[…foodseat];//制作一个副本,这样就不会对传入的数组进行变异。
}
Monkey.prototype.eatsomething=函数(foodString){
此.foodseed.push(foodString)
}
让monkey01=新猴子(“黑猩猩”、“黑猩猩”、“蜂蜜”);
monkey01.吃东西(“班纳纳”)
//现在该吃更多的食物了

console.log(monkey01.foodseat)
这是一个函数,不是对象。但是假设这是您想要的,您可以使用下面的代码

功能猴(名称、种类、食物){
this.name=名称;
这个物种=物种;
this.foodseed=foodseed;
this.eatSomething=函数(){
log(`I am${name}。我是${species}物种的一部分,并且吃过${foodseat}`);
}
}
让monkey01=新猴子(“黑猩猩”、“黑猩猩”、“蜂蜜”);
让monkey02=新猴子(“吉伯”、“吉本”、“苹果”);
let monkey03=新猴子(“宝宝”、“宝宝”、“香蕉”);

monkey01.eatSomething()这是一个函数,不是对象。但是假设这是您想要的,您可以使用下面的代码

功能猴(名称、种类、食物){
this.name=名称;
这个物种=物种;
this.foodseed=foodseed;
this.eatSomething=函数(){
log(`I am${name}。我是${species}物种的一部分,并且吃过${foodseat}`);
}
}
让monkey01=新猴子(“黑猩猩”、“黑猩猩”、“蜂蜜”);
让monkey02=新猴子(“吉伯”、“吉本”、“苹果”);
let monkey03=新猴子(“宝宝”、“宝宝”、“香蕉”);

monkey01.eatSomething()对我来说,这看起来像一个函数。不是一个物体。对象类似于
var monkey={name:“monkey01”,age:“10”}
等@SultanBandar请解释一下方法。它的预期输出是什么?@Aniket G更具体地说,它是一个构造函数,用于创建具有预定义属性的新对象,就像在我看来像函数的最后3行代码中所做的那样。不是一个物体。对象类似于
var monkey={name:“monkey01”,age:“10”}
等@SultanBandar请解释一下方法。它的预期输出是什么?@Aniket G更具体地说,它是一个构造函数,用于创建具有预定义属性的新对象,就像在代码的最后3行中所做的那样。在对象定义外部而不是内部定义方法时,有什么特殊之处吗?例如:
this.eatsomething=function(foodString){…}
。只是好奇,没什么…@Shidersz把它放在原型机上更有效。这样,只有一个函数,所有实例都引用它。将定义放入构造函数时,每个实例都会生成函数的唯一副本。此外,当函数位于原型上时,原型继承也起作用。例如,你可以创建一个黑猩猩类,它可以继承猴子的方法。我明白了,谢谢你,这对他也有帮助!如果我们使用@Shidersz,同样有效吗?@Shidersz如果你使用类,这些方法最终会出现在我上面提到的原型上。再次感谢你!对不起,如果我打扰你,我只是好奇你的方法。有没有