javascript 对象状态(KVO)观察者

一.首先来看一段代码

<script type="text/javascript">

var callback = function(records) //监听状态改变的回调函数
{     
    records.map(function(record){     //状态改变的记录信息    
        console.log('Previous attribute value: ' + record.oldValue);       
    }); 
 }; 
 
 var mo = new MutationObserver(callback); //构建观察者
 
 var element = document.getElementById('#my_element'); 

 var options = { 
                 'attributes': true,     
                 'attributeOldValue': true 
                  }

mo.observe(element, options); //设置要观察的对象和对象状态

//observer.disconnect(); //停止观察
//observer.takeRecords(); 清除变动信息,本次变动不在处理
</script>

上述是一个非常简单的例子

在一个HTML元素中,可被观察的属性或者状态如下。

childList:子元素的变动。
attributes:属性的变动。
characterData:节点内容或节点文本的变动。
subtree:所有


二。我们也要知道的一点是,一个对象也可被多个观察者观察!

~~~~~~~~~~~~~~~~~~~~~~~2014-11-29日更新~Observer~~~~~~~~~~~~~~~~~~~~~~~~~

Object.observe方法用于观察对象属性的变化。

var o = {}; 
Object.observe(o, function(changes) {   
        changes.forEach(function(change) {     
                    console.log(change.type, change.name, change.oldValue);   
                    }); 
             }); 
o.foo = 1; 
// add, 'foo', undefined 
o.foo = 2; 
// update, 'foo', 1 
delete o.foo; 
// delete, 'foo', 2


对于KVO的用法,相信学习IOS的人活着学过java观察者模式的人比较了解,通过这些UI状态的变化,我们可以更新各种数据,在MVC->MVP->MVVM的过程,“

基于数据的驱动”取代“基于事件的驱动”是一种非常好的设计里面,C# +wpf就是这种理念,当然js也有,android也有。


转载于:https://my.oschina.net/ososchina/blog/349604

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值