Я работаю над улучшением некоторых функций ослабления bezier и имею проблему с this
. В принципе, объект Ease
.Javascript: получить прототип родителя `this`
Ease.bezier = function(mX1, mY1, mX2, mY2) {
return _bezier.processBezier(mX1, mY1, mX2, mY2);
};
var _bezier = Ease.bezier.prototype;
_bezier.processBezier = function (mX1, mY1, mX2, mY2) {
console.log(this) // this shows the proper object
this.mX1 = mX1;
this.mX2 = mX2;
this.mY1 = mY1;
this.mY2 = mY2;
return _bezier.render;
};
_bezier.render = function(aX){
console.log(this) // this shows another object
if (this.mX1 === this.mY1 && this.mX2 === this.mY2) return aX;
if (aX === 0) return 0;
if (aX === 1) return 1;
return _bezier.computeBezier(_bezier.gx(aX), this.mY1, this.mY2);
};
_bezier.render
функция является тот, который связан с твининг двигателя, как tween.js, и, следовательно, наследует это this
, так что значения для this.mX1
и других связанных с Безье значений не определены в функции _bezier.render
.
Если я заменил на _bezier
, анимация будет работать, но всегда будет использовать значения последнего экземпляра для всех других анимаций.
Итак, вопрос в том, есть ли способ получить this
от _bezier.processBezier
внутри функции _bezier.render
как-то?
Или, может быть, я могу упростить код, связывая функции таким образом, чтобы получить право на право this
?
Большое спасибо.
Я не понимаю ваш код. Почему вы используете _bezier для создания его? Ease.bezier = function (mX1, mY1, mX2, mY2) { return _bezier.processBezier (mX1, mY1, mX2, mY2); }; –
Я думаю, что вы не понимаете прототип oop и javascript. –
Почему бы не использовать «это» внутри функций, а не _bezier? –