什么是Javascript中的构造函数属性?

时间:2015-10-14 07:55:20

标签: javascript

在下面的代码中,为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

一般来说,我们是否需要设置构造函数?如果我们不设置它,它在哪里可以成为一个问题?

1 个答案:

答案 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
}