0
(function($){
  $.fn.countdown = function(){

   var current = 5;
   function count(){

     this.text(current);

   }

    count();

 }
})(jQuery);

为什么在这个插件中我得到一个控制台错误Uncaught TypeError: Object [object global] has no method 'text'。但是,例如,如果我在 count 函数之外声明this为变量,var this_selected = this;然后在 count 函数中使用它,那么它就可以工作。

4

2 回答 2

0

this是 Javascript 的一个令人困惑和愚蠢的方面。任何不同意的人都在这个世界上度过了太多时间。

只有通过以下两种方式之一,您才能真正了解this函数中的内容:

myFunc = function() {
  // I wonder what 'this' is?
}
myObj.myFunc = myFunc;

myObj.myFunc();
// ('this' will be 'myObj')   ...OR...

myFunc.apply(myObj/*, any extra arguments here*/);
// ('this' will again be 'myObj'). apply is a special method in each function object

就我而言,该问题已通过内部dojo.hitch使用来解决apply。听起来 JQuery 中的解决方案有点不同。也许这个答案会对你有所帮助。

于 2013-07-16T15:05:00.157 回答
0

javascript变量应该在使用前声明。你不是说$(this)在这种情况下吗?

于 2013-07-16T14:58:18.410 回答