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



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

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

我在 Jon Duckett 的 Javascript & 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
};        

但是当你在括号中使用"+"时会发生什么

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

相关内容

  • 没有找到相关文章