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函数先执行一遍么?求解

阅读 1.8k
1 个回答

catCat 仔细看好 的你定义

var cat = new Cat()
你调用的是cat  是Cat的新实例  当然自上而下执行一次  结果一目了然
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题