这条线是如何工作的:obj [' e' + type + fn] = fn

时间:2015-01-25 22:52:12

标签: javascript event-handling helper

我一直在寻找对此的解释。我知道,在Javascript中,您可以使用方括号表示法获取/设置对象的属性,但是当您使用' +'时会发生什么?在括号中,像这样:

obj['e'+type+fn] = fn;

我在Javascript& Jon Duckett的Jquery书。他使用此代码作为辅助函数,最初由John Resig创建。

这是完整的代码块。

function addEvent( obj, type, fn ) {
   if ( obj.attachEvent ) {
      obj['e'+type+fn] = fn;
      obj[type+fn] = function(){
                        obj['e'+type+fn]( window.event );
                     }
      obj.attachEvent( 'on'+type, obj[type+fn] );
   } else {
      obj.addEventListener( type, fn, false );
   }
};

当我把它放在一起时,这就是我所看到的(这对我来说没有意义):

var obj = {
    e: fn,
    type: fn,
    fn: fn
};        

1 个答案:

答案 0 :(得分:1)

  

但是在括号中使用'+'时会发生什么

这是一个表达,就像property brackets中的其他内容一样。在这种情况下,它将字符串"e"与事件类型和stringified侦听器函数连接起来,以获得相当独特的属性名称。