分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

js----各种模式

发布时间:2023-09-06 02:34责任编辑:蔡小小关键词: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>

js----各种模式

原文地址:https://www.cnblogs.com/SRH151219/p/10478611.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved