js----各种模式

1.单例模式

//单个实例,只有一个对象,多次创建,返回同一个对象
//原理:给构造函数添加静态属性,第一次new对象时,构造函数中没有该静态属性,则添加静态属性,
    以后再new对象时,就已经存在该静态属性,直接返回该静态属性(是一个对象)

<script> function Person(name,age){ if( !Person.ins){ Person.ins = { name:name, age:age, eat:function(){ return this.name + "在吃饭"; } } } return Person.ins; } var p1 = new Person("小明",12); var p2 = new Person("张三",22); console.log(p1.name,p1.eat());//小明 小明在吃饭 console.log(p2.name,p2.eat());//小明 小明在吃饭 console.log(p1 == p2);//true </script>

2.观察者模式

观察者只需要记录订阅者的信息(将订阅者记录成一个列表),不需要单独向某个用户进行特殊操作,就能向所有订阅者发送消息

应用场景:
  公众号,微博等

例如:
  售楼处向客户发送房子信息
  首先:记录用户的手机号等信息,记录成一个列表(数组)
  其次:发送信息
 
<script>
    //售楼处,记录客户留下的电话号码
    var saleHouse = {
        //arr用于存放电话号码
        arr: [],
        // recode:function(phone){
        //     saleHouse.arr.push(phone)
        // },
        // sendMsg: function (square, money) {
        //     for (var i = 0, len = saleHouse.arr.length, arr = saleHouse.arr; i < len; i++) {
        //         console.log("您好" + arr[i] + "先生/女士" + "房子" + square + "平方" + money + "万");
        //     }
        // }
    }

    //售楼处记录客户留下的电话号码
    saleHouse.recode = function (phone) {
        saleHouse.arr.push(phone);
    }

    //售楼处给所有客户发送信息
    saleHouse.sendMsg = function (square, money) {
        for (var i = 0, len = saleHouse.arr.length, arr = saleHouse.arr; i < len; i++) {
            console.log("您好" + arr[i] + "先生/女士" + "房子" + square + "平方" + money + "");
        }
    }

    //记录
    saleHouse.recode("");
    saleHouse.recode("");
    //发推送
    saleHouse.sendMsg(100, 200);
</script>

猜你喜欢

转载自www.cnblogs.com/SRH151219/p/10478611.html
今日推荐