请教一个javascript代码的 解释

来源:百度知道 编辑:UC知道 时间:2024/05/02 08:45:45
请问一下:这个代码
function addEvent( node, type, listener ) {
// Check compatibility using the earlier method
// to ensure graceful degradation
if(!isCompatible()) { return false }
if(!(node = $(node))) return false;

if (node.addEventListener) {
// W3C method
node.addEventListener( type, listener, false );
return true;
} else if(node.attachEvent) {
// MSIE method
node['e'+type+listener] = listener;
node[type+listener] = function(){node['e'+type+listener]( window.event );}
node.attachEvent( 'on'+type, node[type+listener] );
return true;
}
其中node['e'+type+listener]
node后方括号什么意思?
在javascript的基本语法中我 没有见过 这种方括号
请高手解释一下
13037376你理解的真透彻,太牛了!谢谢你!

不过我还是不是全部理解。
比如:方法名node['e'+type+listener]只是一个自定义的约定。
请问什么是 自定义的约定啊? 它的作用范围 是全局吗?

function addEvent(node,type,listener){
// if(!isCompitable){return false;};
/*
使其可接受ID或者node
*/
if(!(node=$(node))){return false;}
/*
标准浏览器直接使用addeventListener绑定事件。
*/
if(node.addEventListener){
node.addEventListener(type,listener,false);
return true;
};
/* IE为了解决attachEvent丢失this引用的bug,进行一些包装处理 */
if(node.attachEvent){
/*
创建一个属性来保存事件响应函数,并使其可以得到this的引用。
方法名['e'+type+listener]只是一个自定义的约定,好在必要的时候按约定删除这个响应函数。
*/
node['e'+type+listener]=listener;
/*
重新包装这个函数,把IE的事件对象传进去(并不是必须的,因为内部一样可以直接使用event对象),
使其可以象FF等标准浏览器一样从参数中得到这个事件对象。
而且函数名不一定要用node[type+listener],也可以用一个局部变量如var tmp=fn来标