duck
和beagle
上有一个特殊的constructor
属性: let duck = new Bird();请注意,
让beagle = new Dog();
console.log(duck.constructor === Bird); //打印为true
console.log(beagle.constructor === Dog); //打印为true
constructor
属性是对创建实例的构造函数的引用。 constructor
属性的优点是可以检查此属性以找出它是什么类型的对象。以下是如何使用它的示例: function joinBirdFraternity(candidate){注意
if(candidate.constructor === Bird){
返回true;
} else {
返回虚假;
}
}
constructor
属性可以被覆盖(将在接下来的两个挑战中讨论),因此通常最好使用instanceof
方法来检查对象的类型。 joinDogFraternity
函数,该函数接受candidate
参数,并且如果候选者是Dog
,则使用constructor
属性返回true
,否则返回false
。 joinDogFraternity
应该被定义为一个函数。
testString: assert(typeof(joinDogFraternity) === 'function');
- text: 如果candidate
是Dog
一个实例, joinDogFraternity
应该返回true。
testString: assert(joinDogFraternity(new Dog("")) === true);
- text: joinDogFraternity
应该使用constructor
属性。
testString: assert(/\.constructor/.test(code) && !/instanceof/.test(code));
```