通过说明与示例了解js五种设计模式


Posted in Javascript onJune 17, 2019

第一种模式:js工厂模式

var lev=function(){ 
return "啊打"; 
}; 
function Parent(){ 
var Child = new Object(); 
Child.name="李小龙"; 
Child.age="30"; 
Child.lev=lev; 
return Child; 
}; 
var x = Parent(); 
alert(x.name); 
alert(x.lev());

说明:

1.在函数中定义对象,并定义对象的各种属性,,虽然属性可以为方法,但是建议将属性为方法的属性定义到函数之外,这样可以避免重复创建该方法

2.引用该对象的时候,这里使用的是 var x = Parent()而不是 var x = new Parent();因为后者会可能出现很多问题(前者也成为工厂经典方式,后者称之为混合工厂方式),不推荐使用new的方式使用该对象

3.在函数的最后返回该对象

4.不推荐使用这种方式创建对象,但应该了解

第二种模式:js构造函数模式

var lev=function(){ 
return "啊打"; 
}; 
function Parent(){ 
this.name="李小龙"; 
this.age="30"; 
this.lev=lev; 
}; 
var x =new Parent(); 
alert(x.name); 
alert(x.lev());

说明:

1.与工厂方式相比,使用构造函数方式创建对象,无需再函数内部重建创建对象,而使用this指代,并而函数无需明确return

2.同工厂模式一样,虽然属性的值可以为方法,扔建议将该方法定义在函数之外

3..同样的,不推荐使用这种方式创建对象,但仍需要了解

第三种模式:js原型模式

var lev=function(){ 
return "啊打"; 
}; 
function Parent(){ }; 
Parent.prototype.name="李小龙"; 
Parent.prototype.age="30"; 
Parent.prototype.lev=lev; 
var x =new Parent(); 
alert(x.name); 
alert(x.lev());

说明:

1.函数中不对属性进行定义

2.利用prototype属性对属性进行定义

3.同样的,不推荐使用这样方式创建对象

第四种模式:构造函数+原型的js混合的模式(推荐)

function Parent(){ 
this.name="李小龙"; 
this.age=32; 
};
Parent.prototype.lev=function(){ 
return this.name; 
};
var x =new Parent();
alert(x.lev());

说明:

1.该模式是指混合搭配使用构造函数方式和原型方式

2.将所有属性不是方法的属性定义在函数中(构造函数方式)
将所有属性值为方法的属性利用prototype在函数之外定义(原型方式)

3.推荐使用这样方式创建对象,这样做有好处和为什么不单独使用构造函数方式和原型方式,由于篇幅问题这里不予讨论

第五种模式:构造函数+原型的动态原型模式(推荐)

function Parent(){ 
this.name="李小龙"; 
this.age=32; 
if(typeof Parent._lev=="undefined"){ 
Parent.prototype.lev=function(){ 
return this.name; 
} 
Parent._lev=true; 
} 
}; 
var x =new Parent(); 
alert(x.lev());

说明:

1.动态原型方式可以理解为混合构造函数,原型方式的一个特例

2.该模式中,属性为方法的属性直接在函数中进行了定义,但是因为

if(typeof Parent._lev=="undefined"){
Parent._lev=true;
}

从而保证创建该对象的实例时,属性的方法不会被重复创建

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 实现图片无缝滚动
Dec 19 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
Mar 03 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
Apr 12 Javascript
jquery删除数组中重复元素
Dec 05 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
Apr 26 Javascript
vue 虚拟dom的patch源码分析
Mar 01 Javascript
使用vue-cli webpack 快速搭建项目的代码
Nov 21 Javascript
简单了解小程序+node梳理登陆流程
Jun 24 Javascript
解决layer弹出层自适应页面大小的问题
Sep 16 Javascript
浅谈vue中组件绑定事件时是否加.native
Nov 09 Javascript
使用vue实现通过变量动态拼接url
Jul 22 Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 Javascript
简单了解vue.js数组的常用操作
Jun 17 #Javascript
送你43道JS面试题(收藏)
Jun 17 #Javascript
通过实例学习React中事件节流防抖
Jun 17 #Javascript
如何解决js函数防抖、节流出现的问题
Jun 17 #Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
Jun 17 #Javascript
通过js给网页加上水印背景实例
Jun 17 #Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
Jun 17 #Javascript
You might like
yii添删改查实例
2015/11/16 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
python实现接口并发测试脚本
2019/06/25 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
浅析NumPy 切片和索引
2020/09/02 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
秋季运动会加油稿200字
2014/01/11 职场文书
工程质量承诺书范文
2014/03/27 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
雨中的树观后感
2015/06/03 职场文书
党员证明模板
2015/06/19 职场文书