2012-07-20 156 views
1

有关于在另一个原型函数中调用一个原型函数的问题。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 
    }); 
} 

感谢您的帮助

回答

1

如果this.target是一个jQuery对象回调fadeOut将被称为this作为DOMNode。

而是执行此操作:

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

我选择的名字thatme为以this我所有的初始化引用。我从来没有使用thatme为DomNodes,等等。

请参阅有关此点的观点。

编辑:

Acually我用methat - 不知道是什么即时通讯思想? !


而对于评论:

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

+1但是* ugh *'that'。 '那'使* no *感觉。 '自我'也许...... :-) – 2012-07-20 17:36:22

+0

有些人不喜欢'自我',因为一些很好的理由。也许在我的回答中将它命名为“slider”。 – 2012-07-20 17:37:14

+0

啊......我是个白痴。说得通。谢谢! – jchamb 2012-07-20 17:39:12

0

fadeOut功能是不是在你的slider对象的情况下调用。

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