在下面的代码中,为Cat设置构造函数的用途是什么?
function Mammal(){
}
Mammal.prototype.breathe = function(){
// do some breathing
};
function Cat(){
}
Cat.prototype = new Mammal();
Cat.prototype.constructor = Cat;
var garfield = new Cat();
console.log(garfield instanceof Cat);
无论是否指定构造函数,它都会在检查true
instanceof
一般来说,我们是否需要设置构造函数?如果我们不设置它,它在哪里可以成为一个问题?
答案 0 :(得分:3)
在以前版本的ECMAScript中,instanceof
used the constructors in the object's prototype chain。但是,在ES6中,有a Symbol确定一个对象是否是instanceof
构造函数,并且它更可靠,因为它需要非常精确的努力来拧紧该符号。
但是,对象的构造函数在某些情况下可能很有用,在这种情况下,您要创建另一个相同类型的对象,例如正确克隆实例:
function clone(o) {
var newO = new o.constructor()
// copy properties
return newO
}