首页 > 解决方案 > 如何将类的实例添加到数组中的项目?

问题描述

假设我有一个class被调用Dog的,它有一个名为的数组属性.puppies。我正在尝试将 puppies 数组中的每个项目都设置为instanceof Dog. 我将如何实现这一目标?

class Dog {
  constructor(make){
    this.name = name;
    this.puppies = [];
  }

  addPuppies(name){
    this.puppies.push(name);
  }
}

const dog = new Dog('Doug');
console.log(dog instanceof Dog); // true

dog.addPuppies('Douggy');

const douggy = dog.puppies[0];

console.log(douggy instanceof Dog); // false 

标签: javascript

解决方案


您需要调用new Dog您调用的所有内容addPuppies,否则您将没有 Dog 实例:

class Dog {
  constructor(make){
    this.name = name;
    this.puppies = [];
  }

  addPuppies(puppy){
    this.puppies.push(puppy);
  }
}

const dog = new Dog('Doug');
console.log(dog instanceof Dog); // true

dog.addPuppies(new Dog('Douggy'));

const douggy = dog.puppies[0];

console.log(douggy instanceof Dog); // true

或者您可以更改addPuppies为调用new Dog自身:

class Dog {
  constructor(make){
    this.name = name;
    this.puppies = [];
  }

  addPuppies(name){
    this.puppies.push(new Dog(name));
  }
}

const dog = new Dog('Doug');
console.log(dog instanceof Dog); // true

dog.addPuppies('Douggy');

const douggy = dog.puppies[0];

console.log(douggy instanceof Dog); // true


推荐阅读