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

时间:2018-07-09 12:16:23

标签: javascript setter getter

我试图在对Element.className的每次调用中调用getter。 我已经得出结论了:

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

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

    });

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

1 个答案:

答案 0 :(得分:1)

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

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

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