猿问

js的call()继承问题

function Animal(name,weight){

   this.name = name;

   this.weight = weight;

}

 

function Cat(){

    Animal.call(this,'cat','50');

  //Animal.apply(this,['cat','50']);

 

   this.say = function(){

      console.log("I am " + this.name+",my weight is " + this.weight);

   }

}

 

var cat = new Cat();

cat.say();//I am cat,my weight is 50

call()实现继承的原理我动,但是上面这段代码cat直接调用say()的话不应该是只执行Cat构造函数里的say方法吗?而Animal.call(this,'cat','50');这一行不应该没执行吗?难道是因为new一个cat实例的时候会把Cat函数先执行一遍么?求解


MMMHUHU
浏览 356回答 1
1回答

米脂

cat 和Cat 仔细看好 的你定义var cat = new Cat()你调用的是cat  是Cat的新实例  当然自上而下执行一次  结果一目了然
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答