More Related Content More from Koubei Banquet (20) 夜宴48期《一场关于YUI3/jQuery的精彩辩论》5. • John Resig:开源社区是YUI可持续发展的关键所在,它
会带来更多的反馈和热情的开发者,YUI的影响力也
在开源社区中潜移默化的影响这其中的每个人,
Yahoo 不应是其唯一的维护者,维护者应当来自于更
广阔的开源社区。
• 玉伯:我建议。Resig 的建议里,只有一个关键点:
Simplicity is key。并且很想传递出一个理念:Simplicity
is far harder to get right than building complex
applications。“简单比复杂更具挑战”,可惜Resig并
没有有效传递出来。的感觉,NCZ 并没有很好的领悟
到 John Resig 的
7. 对象的属性,需要记下观察者委托
• var Subject = function(name,age){
• this._name = name;
• this._age = age;
• this.nameDelegates = [];
• this.ageDelegates = [];
• };
8. 对象需要提供给观察者开始观察的接口
• Subject.prototype = {
• addNameHandle:function(fn){
• this.nameDelegates.push(fn);
• },
• addAgeHandle:function(fn){
• this.ageDelegates.push(fn);
• },
• Name_OnChange:function(){
• for(var i=0; i<this.nameDelegates.length; i++){
• this.nameDelegates[i](this);
• }
• },
• Age_OnChange:function(){
• for(var i=0; i<this.ageDelegates.length; i++){
• this.ageDelegates[i](this);
• }
• },
9. • setName:function(name){
• this._name = name;
• this.Name_OnChange();
• },
• getName:function(){
• return this._name;
• },
• setAge:function(age){
• this._age = age;
• this.Age_OnChange();
• },
• getAge:function(){
• return this._age;
• }
• };
10. 观察者
• var Observe = function(number){
• var _number = number
• this.fnObserve = function(obj){
• console.log("观察者" + _number + "观察到对象的信
息变了,名字:" + obj.getName() + "年龄:" + obj.getAge());
• }
• };
11. 其他观察者
• var otherObserve = {
• subjectNameChange:function(obj){
• console.log("衰仔,又换名字了啊,名字看上去很傻:" +
obj.getName());
• },
• subjectAgeChange:function(obj){
• console.log("衰仔," + obj.getAge() + "岁了,老了?");
• }
• };
12. 调用方法
• var subject = new Subject("super man","12");
• var observe1 = new Observe(1);
• var observe2 = new Observe(2);
•
• subject.addNameHandle(observe1.fnObserve);
• subject.addAgeHandle(observe2.fnObserve);
•
• subject.addNameHandle(otherObserve.subjectNameChange);
• subject.addAgeHandle(otherObserve.subjectAgeChange);
•
• subject.setName("stupid man");
• subject.setAge(500);