JavaScript设计模式小抄集(持续更新)
前言
本文旨在记录JavaScript中常用的设计模式代码片段,简要说明使用场景,不过于追究细节。在设计模式开篇之前,还是先要搞清楚JavaScript中关于面向对象的基础知识,可以先看看JavaScript面向对象小抄集
JavaScript设计模式
简单工厂(Simple Factory)
简单工厂又叫做静态工厂方法( Static Factory Method ),由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象
类型:创建型
适用场景:
- 工厂类负责创建的对象比较少
- 客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心
- 由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用
代码片段:
//方式一:new对象
var Basketball = function(){
this.content = "篮球";
}
Basketball.prototype.getBallSize(){
console.log("直径20公分");
}
var Football = function(){
this.content = "足球";
}
Football.prototype.getBallSize(){
console.log("直径15公分");
}
//运动工厂
var SportFactory = function(name){
if (name == 'NBA') {
return new Basketball();
} else if (name == 'WorldCup') {
return new Football();
}
}
//方式二:创建一个新对象,然后包装增强属性和方法实现
function createBall(name,content){
//创建一个对象,然后扩展(这种方式又叫做寄生方式)
var o = new Object();
o.content = content;
o.getContent = function(){
return this.content;
}
//各个对象的差异部分
if (name == 'NBA') {
}
else if (name == 'WorldCup') {
}
return o;
}
参考
JavaScript设计模式小抄集(持续更新)的更多相关文章
- JavaScript面向对象小抄集
前言 本文旨在记录JavaScript中面向对象的基础知识 搞明白JavaScript中的面向对象 一切都是对象 JavaScript中,除了基本类型外,其它类型都是对象类型 所谓对象就是若干属性的集 ...
- DataStage 错误集(持续更新)
DataStage 错误集(持续更新) DataStage序列文章 DataStage 一.安装 DataStage 二.InfoSphere Information Server进程的启动和停止 D ...
- C#、Java中的一些小知识点总结(持续更新......)
前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...
- JavaScript资源收集分享,持续更新中。。。
平时收集的一些JavaScript资源,分享给大家 jQuery UI jEasyUI Extensions http://jqext.sinaapp.com 布局做的挺不错,有比较复杂的菜单导航.P ...
- 基于Taro与typescript开发的网易云音乐小程序(持续更新)
基于Taro与网易云音乐api开发,技术栈主要是:typescript+taro+taro-ui+redux,目前主要是着重小程序端的展示,主要也是借此项目强化下上述几个技术栈的使用,通过这个项目也可 ...
- iOS 小知识点(持续更新)
1.如何通过代码设置Button title的字体大小 设置Button.titleLabel.font = [UIFont systemFontOfSize:<#(CGFloat)#> ...
- 安装 Ubuntu 21.04 后必备的绝佳应用大合集(持续更新中)
@ 目录 一.Google Chrome 浏览器 1.下载 2.安装 3.设置搜索引擎 二.火焰截图(替代QQ截图) 1.简介: 2.安装: 3.设置快捷键: 三.VLC视频播放器(替代Potplay ...
- javascript/jquery 常见功能实现(持续更新...)
1. input 只能输入整数数字和字母 $(document).on('keyup','#no',function(){ var val = $.trim($(this).val()); if(va ...
- jquery小技巧汇总 持续更新中
1.jquery高亮当前选中菜单 $("document").ready(function(){ $(".menu li").click(function(){ ...
随机推荐
- 【SPOJ8222】Substrings (后缀自动机)
题意: 给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值. 求F(1)..F(Length(S)) Length(S) <= 250000 思路:板子中st[x]定义为r ...
- [CSP-S模拟测试]:y(DP+bitset)
题目背景 $\frac{1}{4}$遇到了一道水题,叕完全不会做,于是去请教小$D$.小$D$懒得理$\frac{1}{4}$,直接就离开了.于是,$\frac{1}{4}$只好来问你,这道题是这样的 ...
- 用 Flask 来写个轻博客 (31) — 使用 Flask-Admin 实现 FileSystem 管理
Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 编写 FileSystem Admin 页面 Flask-A ...
- Tecplot 360 安装后弹出“Is your Tecplot 360 EX liense valid?”解决方法
在hosts文件中添加127.0.0.1 download.tecplot.com这句指令时,应注意1与download之间有空格!
- https中引用http
https里引用http不安全,会报错 解决方案 1.可以部署在http中,http中引用https不会存在安全问题报错 2.https中引用https,把需要引用的http部署成https
- webpack请求文件路径代理
在开发模式下,访问页面请求会跑到根路径,因为写的都 ./images 而index又在根目录, 所以访问地址会是 http://localhost:8080/images/abc.jpg 而实际 ...
- PAT_A1077#Kuchiguse
Source: PAT A1077 Kuchiguse (20 分) Description: The Japanese language is notorious for its sentence ...
- JQuery判断radio(单选框)是否选中和获取选中值
一.设置选中方法 代码如下: $("input[name='名字']").get(0).checked=true; $("input[name='名字']"). ...
- Linux中zip压缩和解压缩命令
主要参数 -c:将解压缩的结果-l:显示压缩文件内所包含的文件-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换-t:检查压缩文件是否正确-u:与-f参数类似,但是除了更新现有的 ...
- 重定向和转向的写法,重定向以post方式提交
重转向保留跳转过来的Referer,路径不会变1 request.getRequestDispatcher("/eventweb/index.sp?loginId=" + logi ...