Javascript继承,成员未定义

Javascript inheritance, member undefined

我正在一个名为 Animation.js 的文件中创建一个 "class":

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

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

然后我创建了一个子项 class,它位于一个名为 LinearAnimation.js:

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

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

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

你想要 Animation.call(this, s),而不是 Animation.call(s)call 的第一个参数为函数调用设置 this。在您的代码中,您使用 thiss 调用 Animation,因此您的 s 参数得到 span 属性,而不是this 正在 LinearAniamtion.

中构建

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

此外,用从其自身继承的对象替换函数原型 (class) 毫无意义。

试试这个:

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);