Javascript原型继承原型函数调用



有一个关于在另一个原型函数中调用一个原型功能的问题。

比方说,我有一个基本的滑块,有两个原型函数。

function Slider() {
}
Slider.prototype.transition = function() {
}
Slider.prototype.setTargets = function() {
}

在转换函数内部调用setTargets函数的正确方法是什么

Slider.prototype.transition = function() {
   this.target.fadeOut('normal', function() {
      // call setTargets?  
      this.setTargets(); // errors when i do this
   });
}

感谢的帮助

如果this.target是jQuery对象,则将以this作为DOMNode来调用fadeOut的回调。

改为:

Slider.prototype.transition = function() {
   var me = this;
   this.target.fadeOut('normal', function() {
      me.setTargets(); // <-- See me
   });
}

我已为所有初始化的对this的引用选择了名称thatme。我从未将thatme用于DomNodes等。这对我来说很有意义。

关于这一点的进一步看法,请参阅评论。

编辑:

实际上我用的是me而不是that——不知道我在想什么!


评论:

Slider.prototype.transition = function() {
   var me = this;
   this.target.fadeOut('normal', function() {
      var domThis = this;
      me.setTargets(); // <-- See me
      setTimeout(function() {
          // Use domThis [Dom Node]
      }, 123);
   });
}

或者:

你可以制作一个jQuery对象:

      var $this = $(this);
      me.setTargets(); // <-- See me
      setTimeout(function() {
          // Use $this [jQuery Object]
      }, 123);

如果你需要这个的jQuery对象,你可以参考:me.target

      me.setTargets(); // <-- See me
      setTimeout(function() {
          // Use me.target [jQuery Object]
      }, 123);

fadeOut函数不会在slider对象的上下文中调用。

Slider.prototype.transition = function() {
    var slider = this;
    this.target.fadeOut('normal', function() {
        // call setTargets?  
        slider.setTargets(); // should work now.
    });
}

最新更新