2011-02-06 95 views
1

我想鉤入Node的構造函數。是否有可能用我自己的Node構造函數覆蓋公共Node構造函數?覆蓋HTMLNode接口

在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

沒有。您不能爲DOM節點或任何其他DOM對象重新定義構造函數(但可以爲JavaScript對象執行此操作)。因爲它們通常不能被直接調用(除了Image和其他幾個),因此參數的問題是不相關的,因此嘗試和重新定義DOM對象的構造函數是絕對沒有用的。跟蹤DOM更改可以使用突變事件完成。

+0

試圖掛鉤到`document.createElement`以避免涉及dom遍歷的替代方案。 – Raynos 2011-02-08 05:12:14