访问构造函数创建的对象中的属性

时间:2016-08-29 15:36:52

标签: javascript jquery constructor this

我有一个像这样的for循环:

for (var i = 0; i < 10; i++) {
  obj[i] = new MapArea(some passed variables);
}

现在,这个构造函数有一些预定义的属性以及一些在初始化时定义的属性。正如for循环所暗示的那样,每个obj都保存在它自己的数组obj []中的索引中。我的问题是,在我迭代初始化之后,我无法使用

引用单个对象的属性
this.propertyName;

$(this).propertyName;

我正在构建的插件操作鼠标事件(点击和悬停)意味着我需要能够检查附加到事件的obj以获取其当前状态的特定属性,但无法以编程方式知道什么索引它在数组中引用它,或者至少这样做是容易和简洁的。

有没有人遇到过这个问题并找到了解决方案,或者我非常强迫使用数组和索引作为参考?任何帮助都会很棒。

这是我的一个方法,例如:

$.fn.clickLight = function(options) {
  var defaults = $.extend( {
    color : "#43464B",
    opacity : "0.3"
  }, options);
  ctx.globalAlpha = defaults.opacity;

  $(area_ref).click(function(event) {
    $(this).handleMouse(event).each(function() {
      if (!$(this).clicked) { // I try and access here
        console.log(obj.this.clicked);
        $(this).highlight(defaults.color);
        $(this).clicked = true;
      } else {
        console.log(this.clicked);
        $(this).clearlight();
        $(this).clicked = false;
      }
    } );
  } );

  $(area_ref).hover(function() {
    $(this).handleMouse().each(function() {
      $(this).highlight(defaults.color);
    } );
  },function() {
    if (!$(this).clicked){ // I try and access here
      $(this).handleMouse().each(function() {
        $(this).clearLight();
       } );
    }
  } );
  return $(this);
};

1 个答案:

答案 0 :(得分:1)

您可以使用jQuery的data function将对象绑定到DOM元素。因此,您可以执行以下操作来存储对象:

$('#clickableElement1').data('mapArea', new MapArea(some passed variables));

以下内容可以检索给定事件的对象:

var mapArea = $(event.currentTarget).data('mapArea');