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>

浙公网安备 33010602011771号