所有浏览器的Object.Watch()?请注意Object.Watch和Object.Observe现在都被否决了(2018年6月)。我在寻找一种简单的方法来监视对象或变量的变化,我发现Object.watch(),这在Mozilla浏览器中是支持的,但不支持IE。所以我开始四处寻找,看看有没有人写过类似的东西。我发现的唯一件事就是jQuery插件但我不确定这是不是最好的方法。我当然在我的大多数项目中使用jQuery,所以我不担心jQuery方面.总之,问题是:有人能给我看一个jQuery插件的工作示例吗?我很难让它起作用.。或者,有没有人知道有什么更好的选择可以跨浏览器工作?回答后更新:谢谢大家的回复!我试用了这里发布的代码:http:/webreflection.blogpot.com/2009/01/internet-Explorer-Object-Wat.html但我似乎无法使它与IE一起工作。下面的代码在Firefox中运行良好,但在IE中什么也不做。在Firefox中,每次watcher.status被更改,则document.write()在……里面watcher.watch()调用,您可以在页面上看到输出。在IE中,这种情况不会发生,但我可以看到watcher.status是更新值,因为最后一个document.write()Call显示正确的值(在IE和FF中)。但是,如果没有调用回调函数,那就没有意义了.*)我是不是遗漏了什么?var options = {'status': 'no status'},watcher = createWatcher(options);watcher.watch("status", function(prop, oldValue, newValue) {
document.write("old: " + oldValue + ", new: " + newValue + "<br>");
return newValue;});watcher.status = 'asdf';watcher.status = '1234';document.write(watcher.status + "<br>");
3 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
当前答案
let validator = { set: function(obj, prop, value) { if (prop === 'age') { if (!Number.isInteger(value)) { throw new TypeError('The age is not an integer'); } if (value > 200) { throw new RangeError('The age seems invalid'); } } // The default behavior to store the value obj[prop] = value; // Indicate success return true; }};let person = new Proxy({}, validator);person.age = 100;console.log(person.age); // 100person.age = 'young'; // Throws an exceptionperson.age = 300; // Throws an exception
添加回答
举报
0/150
提交
取消