Dom对象的挂钩意味着什么

时间:2012-04-09 07:40:28

标签: javascript dom

在我的项目中,我正在使用正则表达式解析JavaScript代码,尤其是document.createElement等动态函数。但我被建议包裹document.createElement来制作钩子。我不明白怎么做

他们也提供了一个例子:

var f = document.createElement; 
document.createElement = function(tagName){ 
    console.log(tagName); 
    f.apply(document, arguments); 
} 

此代码正在跟踪document.createElement

我无法理解如何在我的代码中使用它可以有人帮助我

1 个答案:

答案 0 :(得分:2)

该代码将存储对原始document.createElement的引用,然后重新分配document.createElement以指向新功能。

在这个新函数内部,它将记录第一个参数,然后调用原始document.createElement()传递document作为其this值并传递arguments的其余部分就像他们一样。

以下是我编码的方法......

(function() {
    var documentCreateElement = document.createElement;

    document.createElement = function(tagName) {
        console.log(tagName);
        return documentCreateElement.apply(document, arguments);
    }

})();

如果console.log()可能无法使用,您可能需要将该行更改为...

window.console && console.log && console.log(tagName);