分享web开发知识

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

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

js设计模式

发布时间:2023-09-06 01:47责任编辑:沈小雨关键词:js

单例模式

let obj = { ?name: ‘xx‘, ?age: 20}

工厂模式

function Person() { this.name = ‘Person1‘; }function Animal() { this.name = ‘Animal1‘; }function Factory() {}Factory.prototype.getInstance = function(className) { ?return eval(‘new ‘ + className + ‘()‘);}var factory = new Factory();var obj1 = factory.getInstance(‘Person‘);var obj2 = factory.getInstance(‘Animal‘);console.log(obj1.name); // Person1console.log(obj2.name); // Animal1

代理模式

function Person() { }Person.prototype.sayName = function() { console.log(‘michaelqin‘); }Person.prototype.sayAge = function() { console.log(30); }function PersonProxy() { ??this.person = new Person(); ?const that = this; ?this.callMethod = function(functionName) { ???console.log(‘before proxy:‘, functionName); ???that.person[functionName](); // 代理 ???console.log(‘after proxy:‘, functionName); ?}}var pp = new PersonProxy();pp.callMethod(‘sayName‘); // 代理调用Person的方法sayName()pp.callMethod(‘sayAge‘); // 代理调用Person的方法sayAge() ???

观察订阅者模式

function Publisher() { ?this.listeners = [];}Publisher.prototype = { ?addListener(listener){ ???this.listeners.push(listener); ?}, ?removeListener(listener){ ???delete this.listeners[listener]; ?}, ?notify(obj){ ???this.listeners.forEach(listener => { ?????if(typeof listener !== ‘undefined‘){ ???????listener.process(obj); ?????} ???}) ?}}function Subscriber() { ?}Subscriber.prototype = { ?process(obj){ ???console.log(obj) ?}}const p = new Publisher();

js设计模式

原文地址:https://www.cnblogs.com/colima/p/8687123.html

知识推荐

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