javascript - 如何将类的实例添加到数组中的项目?
问题描述
假设我有一个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
解决方案
您需要调用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
推荐阅读
- jwt - 如何在 SOA 环境中处理内部服务到服务身份验证
- python - 使用币安签名示例中的“send_public_request”函数发送查询字符串
- amazon-web-services - 如何在 Cloudformation 模板中指定区域以通过 DNS 验证 ACM 证书
- docker - 创建弹性搜索图像。非 root 用户和图像大小的问题
- javascript - (Vue.js)“未捕获(承诺)TypeError:无法读取未定义的属性'结果'”
- java - 术语“钻石算子”是否正确?
- python - 检查字典中是否存在值的Pythonic方法
- c++ - 多态性是实现这一目标的最佳方式吗?(关于派生类中的函数调用)
- c++ - OpenSSL 证书“无法获取本地颁发者证书”
- c# - 如何使用 C# 中的数据库优先方法生成具有所有 CRUD 操作的存储库和模型/实体类