请务必阅读以下所有评论.不推荐使用Object.Watch和Object.Observe.请参阅Elliot B对更新(截至2018年6月)方法的评论.
我一直在寻找一种简单的方法来监控对象或变量的变化,我发现Object.Watch,Mozilla浏览器支持这种方式,但IE不支持.所以我开始四处寻找,看是否有人写过某种等价物.
关于我发现的唯一一件事是jQuery插件,但我不确定这是不是最好的方法.我当然在大多数项目中都使用jQuery,所以我并不担心jQuery方面......
无论如何,问题是:有人能告诉我一个jQuery插件的工作示例吗?我有问题让它工作......
或者,是否有人知道任何可以跨浏览器工作的更好的替代品?
答案后更新:
谢谢大家的回复!我试过这里发布的代码:http: //webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html
但我似乎无法使其与IE一起工作.下面的代码在Firefox中运行良好,但在IE中没有任何作用.在Firefox中,每次Object.Observe更改Object.watch()时watcher.status都会调用in ,您可以在页面上看到输出.在IE中,这不会发生,但我可以看到document.write()更新值,因为最后一次watcher.watch()调用显示正确的值(在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>");
Run Code Online (Sandbox Code Playgroud) 在Javascript中,有没有办法在使用push,pop,shift或基于索引的赋值修改数组时收到通知?我想要一些可以触发我能处理的事件的东西.
我知道SpiderMonkey中的watch()功能,但只有当整个变量设置为其他内容时才有效.
IE11不会也不会实现ES2015代理对象.然而,IE11的延长支持终止于2025年10月14日.
有没有办法为IE11填充代理对象?所有其他浏览器都支持Proxy.
如果是,那么我们今天都可以在生产中使用它.如果没有,那么我们将不得不等待近十年......
编辑:我专门针对IE11,因为我知道IE通常具有我通常不知道的IE特定功能.
Edit2:我特别感兴趣的是能够实现一个全能拦截器.与__getattr__Python 类似.它只需要在IE11中工作.
javascript internet-explorer ecmascript-6 internet-explorer-11 es6-proxy
javascript ×4
dom-events ×2
ecmascript-6 ×1
es6-proxy ×1
jquery ×1
object ×1
properties ×1
watch ×1