首页 > 解决方案 > 调用 window.Element.prototype.className 时调用 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。有任何想法吗?

标签: javascriptsettergetter

解决方案


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

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

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


推荐阅读