Javascript:获取父元素's原型' this '
Javascript: get the parent's prototype `this`
我致力于改进一些bezier easing函数,并且有this
的问题。基本上,一个Ease
对象。
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相关的值在_bezier.render
函数中未定义。
如果我将this
替换为_bezier
,动画工作,但将始终使用最后一个实例的值用于所有其他动画。
所以,问题是,有没有办法从_bezier.render
函数内的_bezier.processBezier
中获得this
?
或者我可以通过绑定函数来访问正确的this
来简化代码?
尝试使用.bind()方法来获取正确的" this ":
// ...
_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;
// use .bind(this)
return _bezier.render.bind(this);
};
// ...
相关文章:
- 混合jQuery,原型和“this”
- Javascript,从原型函数自己的字段中获取“this”
- “this”在不是类原型的函数中
- 在原型中声明 TypeScript 成员,而不是添加到“this”中
- 从原型中的事件访问“this”
- 通过引用调用原型函数时,类会丢失“this”作用域
- 原型方法中的“this”在继承时未按预期解析
- Javascript原型和访问“this”的父对象
- 使用从 async.series 调用的原型函数中的“this”
- 我可以用javascript提供我/the/self=this的原型定义吗
- 传递一个原型's函数作为参数而不丢失'this'上下文
- 什么是原型,$.扩展,并返回this"不得不这么做
- this.collection.reset引发错误-未捕获类型错误:无法读取属性'原型'的未定义
- JavaScript数组.原型如何设置'this'到由方法获得的新数组
- 引用“this"在对象原型方法中的setInterval/setTimeout
- 如何访问我的实例'this'从揭示原型
- Javascript传递"this"从原型到另一个函数
- 什么是'this'当它在原型中时引用
- 原型“this"不工作(JS)
- Javascript:获取父元素's原型' this '