惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - Zhuang miao

使用bootstrap和metroui设计的微网站或手机app界面 利用Mahout实现在Hadoop上运行K-Means算法 大连二手汽车培训网上线 淘宝开放平台API调用nodejs实现 Nodejs+express+angularjs+mongodb搭建前端项目框架NJBlog 淘宝UED前端智勇大冲关第二季 CC.net&Nant配置文件 开发nodejs模块并发布到npm的简单示例 用jsTestDriver运行jasmine cases 使用Jasmine测试你的Javascript(三)之 Matchers 使用Jasmine测试你的Javascript(二)之 Suites和specs 使用Jasmine测试你的Javascript(一)之 Jasmine简介 用SignalR创建实时永久长连接异步网络应用程序 Javascript实现图片的预加载的完整实现 常见前端面试题【转】 - Zhuang miao 更改页面背景的jquery插件 javascript面向对象中的对象创建、继承、封装等实现方式 12款华丽的Admin管理后台模板 AOP
介绍一个款可以在javascript对象上实现观察者模式的类库-Watch.js
Zhuang miao · 2012-11-15 · via 博客园 - Zhuang miao

2012-11-15 21:37  Zhuang miao  阅读(3920)  评论()    收藏  举报

最近发现一个比较有意思的js库可以为javascript的对象实现观察者模式,以往我们使用javascript实现的观察者模式都是通过使用回调函数配合dom上的event事件来操作的,而“Watch.js”可以为javascript的对象实现观察者模式,监听对象的变化。

 watch.js目前主要可以做如下这些事情:

 1,监听对象上一个或多个属性的改变,当改变后触发自定义事件。

 2,批量观察一个对象上所有的属性,当有任何一个改变时,触发自定义事件。

 3,可以取消订阅观察

 4,你可以在你需要的时候,不用改变对象上的属性值,就可手动触发观察器。

 5,可以与jquery兼容 

下面看一个watch.js的基本使用,更多的代码可以参考本文最后的项目地址。

var ex1 = {
    attr1: "initial value of attr1",
    attr2: "initial value of attr2"
};

//监听ex1的attr1,当attr1值发送改变时候触发函数
watch(ex1, "attr1", function(){
    alert("attr1 changed!");
});
//改变attr1值将弹出 attr1 changed!
ex1.attr1 = "other value"; 

该类库内部由于目前是使用__defineSetter__与__defineGetter__实现,所以目前只能工作在如下浏览器中。

* IE 9+, FF 4+, SF 5+, WebKit, CH 7+, OP 12+, BESEN, Rhino 1.7+

不过开发者声称在一下次的更新中将会兼容所有浏览器(我还没想明白在IE8以前如何实现,有高人可以指点一下)。有兴趣的朋友也可以在github关注这个项目。

 项目地址:https://github.com/melanke/Watch.JS