我正在名为Animation.js的文件中创建“类”:

function Animation(s) {
  this.span = s;
};

Animation.prototype = Object.create(Animation.prototype);
Animation.prototype.constructor = Animation;


然后在名为LinearAnimation.js的文件中创建一个子类:

function LinearAnimation(s, cP) {
     Animation.call(s);
     this.controlPoints = cP;
};

LinearAnimation.prototype = Object.create(Animation.prototype);
LinearAnimation.prototype.constructor = LinearAnimation;


问题是,当我访问LinearAnimation类中的this.span成员时,它说它是undefined。我执行得很好吗?谢谢。

最佳答案

Function.prototype.call()函数将thisArg作为其第一个参数,它是被调用函数内的this。之后,将任何其他参数作为输入传递给被调用的函数。

另外,用从自身继承的对象替换函数(类)的原型也没有意义。

尝试这个:



function Animation(s) {
  this.span = s;
};

function LinearAnimation(s, cP) {
     Animation.call(this, s);
     this.controlPoints = cP;
};
LinearAnimation.prototype = Object.create(Animation.prototype);
LinearAnimation.prototype.constructor = LinearAnimation;

var la = new LinearAnimation('something', [1, 2, 3]);

console.log(la);

10-04 22:51