javascript – 使用jQuery应用OOP

前端之家收集整理的这篇文章主要介绍了javascript – 使用jQuery应用OOP前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用jQuery并尝试将一些基本的 Javascript OOP原则应用于一组控制悬停行为的函数.但是,我无法弄清楚如何让“this”关键字引用我正在创建的对象的实例.我的示例代码是:
var zoomin = new Object();

zoomin = function() {
       // Constructor goes here
};

zoomin.prototype = {
       hoverOn: function() {
          this.hoverReset();
          // More logic here using jQuery's $(this)...
       },hoverReset: function() {
          // Some logic here.
       }
       };

// Create new instance of zoomin and apply event handler to matching classes.
var my_zoomin = new zoomin();
$(".some_class").hover(my_zoomin.hoverOn,function() { return null; });

上面代码中有问题的行是在hoverOn()函数调用“this.hoverReset()”.由于“this”现在指的是悬停在其上的元素,因此它不能按预期工作.我基本上想要为该对象的实例(my_zoomin)调用函数hoverReset().

有没有办法做到这一点?

谢谢!

解决方法

仅将函数分配给对象的属性不会将此函数与对象关联.这是你调用函数的方式.

通过电话

.hover(my_zoomin.hoverOn,...)

你只是传递了这个功能.它不会“记住”它属于哪个对象.你可以做的是传递一个匿名函数并在里面调用hoverOn:

.hover(function(){ my_zoomin.hoverOn(); },...)

这将使内部hoverOn引用my_zoomin.因此对this.hoverReset()的调用将起作用.但是,在hoverOn中,您将不会引用选择器创建的jQuery对象.

一种解决方案是将所选元素作为参数传递:

var zoomin = function() {
   // Constructor goes here
};

zoomin.prototype = {
   hoverOn: function($ele) {
      this.hoverReset($ele);
      // More logic here using jQuery's $ele...
   },hoverReset: function($ele) {
      // Some logic here.
   }
};


var my_zoomin = new zoomin();
$(".some_class").hover(function() { 
    my_zoomin.hoverOn($(this));  // pass $(this) to the method
},function() { 
    return null; 
});

下一步,您可以考虑制作jQuery plugin.

原文链接:https://www.f2er.com/jquery/240855.html

猜你在找的jQuery相关文章