加速对象检测

作者:Dean Edwards
原文链接: http://dean.edwards.name/weblog/2005/12/js-tip1/

在JavaScript中,对象检测是很常见的。浏览器的不统一导致你的代码有时候必须包含兼容不同浏览器的分支。这有一个拥有更简洁、更有用意的脚本代码的简单的方式来加速对象的检测。
不要这样做:
function addEvent(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent("on" + type, handler);
}
};
要这样做:
var addEvent;
if (document.addEventListener) {
addEvent = function(element, type, handler) {
element.addEventListener(type, handler, false);
};
} else if (document.attachEvent) {
addEvent = function(element, type, handler) {
element.attachEvent("on" + type, handler);
};
} else {
addEvent = new Function; // not supported
}
这意味着你只要执行一次对象检测而不用每次调用 addEvent时都要进行检测。很明显,这项技术可以用在你进行对象检测时的任何函数中。
一个很简洁的版本:
var addEvent;
addEvent=(
 document.addEventListener?(
    function(element, type, handler) {
        element.addEventListener(type, handler, null);
    }
 ):document.attachEvent?(
    function(element, type, handler) {
        element.attachEvent("on" + type, handler);
    }
 ): new Function; // not supported
)

你可能感兴趣的:(优化,性能,对象,加速,检测)