覆盖HTMLNode接口

时间:2011-02-06 22:44:13

标签: javascript dom

我想挂钩Node构造函数。是否可以使用我自己的Node构造函数覆盖公共Node构造函数?

目前仅在chrome / firefox中进行测试

(function() {
    var _Node = window.Node;

    var Node = function() {
        Event.trigger("nodeCreation", this, arguments); // pseudocode
        _Node.apply(this, arguments);    
    }

    window.Node = Node;

    console.log(document.createElement("div") instanceof _Node); // true
    console.log(document.createElement("div") instanceof Node); // false
}());

我完全清楚如果我弄错了会有多危险。我也知道,如果我能做对的话,这是非常有用的。

是否有其他方法可以覆盖原生DOM对象。扩展原型并不像覆盖构造函数那样有用

1 个答案:

答案 0 :(得分:1)

不。您无法为DOM Node或任何其他DOM对象重新定义构造函数(但您可以为JavaScript对象执行此操作)。

此外,尝试重新定义DOM对象构造函数是绝对无用的,因为它们通常不能直接调用(除了Image和其他几个),因此参数的问题是无关紧要的。可以使用Mutation Events来跟踪DOM更改。