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

Invoking getter when window.Element.prototype.className called

我试图在每次调用 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。