是否有可能知道何时删除一个属性?
var o = { a: 1 }; delete oa;
我想在属性被删除时得到通知,类似于getter和setter访问器描述符。
可能吗?
如果你可以控制你的环境,并确保它是最新的,那么很好。 这篇关于Object.observer的文章将有所帮助。
http://updates.html5rocks.com/2012/11/Respond-to-change-with-Object-observe
否则,如果您需要更旧的浏览器,那么您可能需要自己编写它。 总是在你的脑海里有performance。 新的浏览器实现“工作者线程”,可能这就是Object.observe的资源。 旧的浏览器在一个线程上执行JavaScript,所以你没有这个优势。
你将不得不使用一个计时器,但只是“一个”,而不是多个… John Resig(jQuery先生)已经写了各种关于定时器的文章,以及他们如何在单个线程上执行。 这是其中之一:
http://ejohn.org/blog/how-javascript-timers-work/
注意。 我自己没有尝试过,所以不知道这个performance是否可以接受。
感谢@MarkGraham,我find了javascript和谐的Object.observe()规范提案的规范。
http://wiki.ecmascript.org/doku.php?id=harmony:observe
但是这并没有在node.js中实现(在快速search之后)。
我还发现代理 ,一个更强大的方法来拦截操作。 它也来自和谐,但在node.js可以使用–harmony-proxies标志或–harmony来启用所有和声function。
编辑:Node.js实现和谐代理的旧版本。 这是最新的: 直接代理和他们提供的例子不能按预期工作。 谷歌组
js中没有内置的“通知”系统。 但我认为(最简单的)解决scheme是:在删除属性后,使用您的删除pipe理代码调用一个方法(就像您对通知所做的那样)。
- 从数据库获取最新的5个数据
- Gulp:如何设置相对于处理文件的dest文件夹(使用通配符时)?
- Express回退路由也用于静态文件
- Node.js使用产生两个subprocess,然后两个subprocess如何交换?
- NodeJs + NickJs:在asynchronous函数中进行同步调用
- 如何获取js响应的angular度js中的数据(来自js中间件)
- Node.JS – 简单的Socket.IO示例不起作用。 获取debugging服务的静态内容/socket.io.js(Mac OSX / Localhost)
- 如何使用NodeJsstream过滤JSon文件
- 帮助在node.js中需要一个npm模块