Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

Object.observe 监控对象(Chrome可用)

  在以前的文章中介绍过DOM4的MutationObserver,它可以用来监视DOM元素的属性变化。在目前最新的稳定版Chrome中(Chrome26)已经可以使用Object.observe来监视一般JavaScript对象了。但也只对值属性有用,对访问器属性的结果依然无力。
<script>
var o={};
//为对象o添加属性操作监视
Object.observe(o,function(changies){
  console.log(changies);
});
o.p=1; //添加属性
o.p=1; //值没变,不会触发
o.p=2; //更新属性值
delete o.p; //删除属性
</script>

  但如果用于访问器属性或有其它特性的属性情况就不同了 <script>
var p;
var o={
  get p(){return p;},
  set p(v){p=v;}
};
//为对象o添加属性操作监视
Object.observe(o,function(changies){
  console.log(changies);
});
o.p=123; //访问器属性操作,不会触发
console.log(o.p);

Object.defineProperty(o,"x",{value:1}); //添加属性,会触发

//因为x属性是只读且不可配置的,所以写和删除操作都无效,不会触发
o.x=123;
delete o.x;
</script>
  所以我们依然无法使用Object.observe来监控DOM控件的即时变化,因为读取控件值的属性都是访问器属性。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^