Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调用window.Element.prototype.className时调用getter_Javascript_Setter_Getter - Fatal编程技术网

Javascript 调用window.Element.prototype.className时调用getter

Javascript 调用window.Element.prototype.className时调用getter,javascript,setter,getter,Javascript,Setter,Getter,我试图在每次调用Element.className时调用一个getter。 我说的是: Object.defineProperty(window.Element.prototype, "className", { get(value){ console.log(value); debugger; }, set(value){ console.log(value);

我试图在每次调用Element.className时调用一个getter。 我说的是:

Object.defineProperty(window.Element.prototype, "className", {

        get(value){
            console.log(value);
            debugger;
        },
        set(value){
            console.log(value);
            debugger;
        }

    });
但由于某种原因,它不起作用。 当我调用somenode.className时,我没有调用getter。
有什么想法吗?

className是实例的一个值,因此不会在原型中查找它,而是在对象本身中:

lookup -->  Instance --> Prototype
              innerHTML      querySelector
              className      querySelectorAll
              id
              ...                        ...

您必须在您使用的每个实例上定义getter/setter。

哦,我明白了,所以我需要实际将“window.Element.prototype”替换为“Mynode”,对吗?有没有可能我可以用不同的方式来做?也许可以将这个getter添加到更高的位置,这样在创建实例时它就已经包含了我的getter@avi因此,您必须重写
元素
构造函数,我不确定它是否在所有情况下都有效……好的,非常感谢!