constructor 这句有什么作用,不写也可以打印成功。

         function Animal(){
            this.species = "动物";
        }

        function Cat(name,color){
            this.name = name;
            this.color = color;
        }
        
        Cat.prototype = new Animal();
        Cat.prototype.constructor = Cat;

        var cat1 = new Cat("大毛","黄色");
        console.log(cat1.species)![图片描述][1]

图片描述

阅读 653
评论
    5 个回答

    当你定义一个构造函数的时候

    function Cat() {}

    此时在Cat的原型对象上会有一个constructor属性,指向它自己(即Cat

    Cat.prototype.constructor == Cat

    当你执行以下代码时

    Cat.prototype = new Animal();

    你已经修改了Catprototype,此时Catprototype等于Animal的实例,Cat的原型对象已经没有了constructor这个属性,所以需要你手动给他重新赋值Cat.prototype.constructor = Cat
    当然一般情况下用不到constructor这个属性,所以你不重新指定constructor也是可以的

      相似问题
      推荐文章