zoukankan      html  css  js  c++  java
  • js观察者模式学习

          function Events(){
                var obj = {};
                this.on=function(key,fn){
                   var stack;
                   stack = obj[key] || (obj[key] =[]);
                   
                   return stack.push(fn);
                }
                this.off=function(key){
    
                    var stack;
                    return (stack=obj[key]) != null ? stack.length=0 : void 0;//此处stack.length=0不等同于stack=[],如果设置stack=[],并不能作用于object[key]
                }
                this.once=function(key,fn){
                    this.off(key);
                    return this.on(key,fn);
                }
                this.trigger=function(){
                    var key,stack,i;
                    key = [].shift.call(arguments);
                    stack = obj[key]||(obj[key] = []);
                    for(i=0;i<stack.length;i++){
                        stack[i].apply(this,arguments);
                    }
                }
            }
            var events = new Events();
            events.on("play",function(data){
                console.log(data.name)
            });
            events.on("play",function(data){
                console.log(data.age)
            });
            events.trigger("play",{name:"dpd",age:13})
  • 相关阅读:
    「2019纪中集训Day20」解题报告
    PHP基础入门
    javascript
    正则表达式
    DOM 节点
    对象
    字符串
    函数
    for循环
    jQuery
  • 原文地址:https://www.cnblogs.com/dupd/p/5968071.html
Copyright © 2011-2022 走看看