0
votes

Comment puis-je faire des méthodes à l'intérieur d'un objet

J'ai besoin d'aide avec mes devoirs. Je ne sais pas comment faire une méthode à l'intérieur de l'objet comme ce qu'il veut:

Créer un objet de singe, qui possède les propriétés suivantes: Nom, espèce, nourriture de base.

et les méthodes suivantes:

EatSomething (Thingsasstring)

introduire: producteurs une chaîne introduisant elle-même, y compris son nom, espèce, et ce qu'il a mangé.

-Créer 3 singes total. Assurez-vous que tous les 3 singes ont toutes les propriétés définies et les méthodes définies.

J'ai déjà créé l'objet de singe avec ses propriétés: xxx


3 commentaires

Cela ressemble à une fonction pour moi. Pas un objet. Un objet serait comme var singe = {nom: "monkey01", âge: "10"} etc.


@Sultanbandar veuillez vous expliquer la méthode. Quelle est la sortie attendue?


@Aniket G Il est plus spécifiquement constructeur, pour créer de nouveaux objets avec des propriétés prédéfinies, comme dans les 3 dernières lignes de code


3 Réponses :


0
votes

Vous pouvez attacher des méthodes publiques à JS fonctionne de la même manière que vous attribuez des variables.

p>

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


0 commentaires

2
votes

La façon dont vous le feriez généralement consiste à ajouter une fonction sur le prototype code> singe code>. Cela permettra à toutes les instances de partager la même fonction. Dans la fonction, vous pouvez vous reporter à l'instance avec ceci code> (en supposant que vous l'appelez à partir de l'instance telle que monkey01.eatSomething () code>).

ici nous faisons FoodSeaten Code> Un tableau afin que vous puissiez garder une trace de plus d'une. La méthode tout simplement en pousse dans ceci.foodseaten code>: p>

p>

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)


5 commentaires

Y a-t-il une chose spéciale dans la définition de la méthode à l'extérieur et non à l'intérieur de la définition d'objet? Comme par exemple: this.eatsomething = fonction (alimentation) {...} . Juste curieux, rien de plus ...


@Shidersz Il est plus efficace de le mettre sur le prototype. De cette façon, il n'y a qu'une seule fonction et toutes les instances de référence. Lorsque vous mettez la définition dans le constructeur, chaque instance fait une copie unique de la fonction. De plus, le héritage prototypique fonctionne lorsque la fonction est sur le prototype. Par exemple, vous pouvez créer une classe de chimpanzé capable d'hériter des méthodes de singe.


Je vois, merci, cela clarifie l'aidera aussi! Est la même chose que nous utilisons CLASSES ?


@Shidersz Si vous utilisez des classes, les méthodes se retrouveront sur le prototype comme je l'ai ci-dessus.


Merci encore! Désolé si je dérange votre problème, j'étais juste curieux de votre approche.



0
votes

Ceci est une fonction, pas un objet. Mais en supposant que c'est ce que vous vouliez, vous pouvez utiliser le code ci-dessous.

p>

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


0 commentaires