我想使用 Chrome 的实验性Object.observe()来覆盖对象上设置的所有函数:
var obj = {};
Object.observe(obj, function (changes) {
changes.forEach(function (data) {
if ((data.type == "new" || data.type == "updated") &&
typeof data.object[data.name] == "function" &&
typeof data.object[data.name].isWrapper == "undefined") {
data.object[data.name] = function () {
};
data.object[data.name].isWrapper = true;
}
});
});
obj.helloWorld = function () {
console.log("helloWorld() was called");
};
obj.helloWorld();
不幸的是,控制台仍然显示"helloWorld() was called"。实际上是否可以覆盖对象观察者中当前更改的值?
由于这只是一个实验(没有生产代码!),我很欣赏任何类型的解决方案。