Javascript 覆盖HTMLNode接口

Javascript 覆盖HTMLNode接口,javascript,dom,Javascript,Dom,我想连接到节点构造函数。是否可以用我自己的节点构造函数覆盖公共节点构造函数 目前仅在chrome/firefox中测试 (function() { var _Node = window.Node; var Node = function() { Event.trigger("nodeCreation", this, arguments); // pseudocode _Node.apply(this, arguments); }

我想连接到
节点
构造函数。是否可以用我自己的节点构造函数覆盖公共节点构造函数

目前仅在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对象。扩展他们的原型并没有覆盖构造函数那样有用。您不能为DOM节点或任何其他DOM对象重新定义构造函数(但可以为JavaScript对象重新定义构造函数)


此外,尝试和重新定义DOM对象构造函数是完全没有用的,因为它们通常不能直接调用(Image和其他一些构造函数除外),因此参数的问题与此无关。可以使用突变事件来跟踪DOM更改。

否。您不能为DOM节点或任何其他DOM对象重新定义构造函数(但可以为JavaScript对象重新定义构造函数)


此外,尝试和重新定义DOM对象构造函数是完全没有用的,因为它们通常不能直接调用(Image和其他一些构造函数除外),因此参数的问题与此无关。跟踪DOM更改可以使用突变事件来完成。

试图挂接到
document.createElement
以避免涉及DOM遍历的替代方案。至少在基于webkit的浏览器中,您可以这样挂接它(没有用任何其他方法测试):
document.crotteElement=document.createElement;document.createElement=函数(x){console.log('Creating'+x);返回此.crotteElement(x)}
试图挂接到
document.createElement
以避免涉及dom遍历的备选方案。至少在基于webkit的浏览器中,您可以这样挂接它(尚未使用任何其他工具进行测试):
document.crotteElement=document.createElement;document.createElement=函数(x){console.log('Creating'+x);返回此.crotteElement(x)}