我一直在到处寻找对此的解释。我知道,在 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"
与事件类型和字符串化侦听器函数连接起来,以获得相当独特的属性名称。