JavaScript 设计模式之构造函数模式
一、构造函数模式概念解读
1.构造函数模式概念文字解读
构造函数用于创建特定类型的对象——不仅声明了使用的对象,构造函数还可以接受参数以便第一次创建对象的时候设置对象的成员值。你可以自定义自己的构造函数,然后在里面声明自定义类型对象的属性或方法。
在JavaScript 里,构造函数通常是认为用来实现实例的,JavaScript没有类的概念,但是有特殊的构造函数。通过new 关键字来调用自定义的构造函数,在构造函数内部,this 关键字引用的是新创建的对象。
2.构造函数模式概念拟物化解读
门创建出来是要归属于某个人的,即,有使用对象(小王或小李)。门可以有多把钥匙。门可以有各种花边和形状。
(厂家原始的门,客户要求的门)
二、构造函数模式的作用和注意事项
模式作用:
1.用于创建特定类型的对象。
2.第一次声明的时候给对象赋值。
3.自己声明构造函数,赋予属性和方法。
注意事项:
1.声明函数的时候处理业务逻辑。
2.区分和单例的区别,配合单例实现初始化。
3.构造函数建议大写字母开头。
4. 注意new 的成本。(继承)尽量把公用的功能放到原型上去,具体再扩展。
三、构造函数模式的代码实战和总结
1.一个通俗的例子
<meta charset="utf-8"/> <script type="text/javascript">//1.用于创建特定类型的对象//2.js开发的时候写单引号//造门function makeDoor(){//instanceof 指向当前父类if (!(this instanceof makeDoor)) {return makeDoor();};this.lock="普通"; //门上的锁this.figure="普通"; //门上的花纹this.create=function(){ //开始产门return "【锁头】"+this.lock+"【花纹】"+this.figure;}}var xiaozhangjia=new makeDoor(); //小张家需要建门,//此处如果没有new ,会出现//“JS_singleton.html:46 Uncaught RangeError: Maximum call stack size exceeded”//堆栈溢出的错误。alert("xiaozhangjia"+xiaozhangjia.create()); //开始产门 </script>
2.与单例模式配合的例子
<meta charset="utf-8"/> <script type="text/javascript">//1.用于创建特定类型的对象//2.js开发的时候写单引号//声明一个AA公司,造门;将造门放到AA进来,略改一下语法var AA={ //造门function:makeDoor(figure){//instanceof 指向当前父类if (!(this instanceof makeDoor)) {return new makeDoor();};var _figure = "普通";if (figure) {_figure= figure;};this.lock="普通"; //门上的锁this.figure=_figure; //门上的花纹this.create=function(){ //开始产门return "【锁头】"+this.lock+"【花纹】"+this.figure}} //声明一个BB公司,也可以造门var BB={ //造门function : makeDoor(figure){//instanceof 指向当前父类if (!(this instanceof makeDoor)) {return new makeDoor();};var _figure = "普通";if (figure) {_figure= figure;};this.lock="普通"; //门上的锁this.figure=_figure; //门上的花纹this.create=function(){ //开始产门return "【锁头】"+this.lock+"【花纹】"+this.figure}}var xiaozhangjia=new AA.makeDoor(); //小张家需要建门,//此处如果没有new ,会出现//“JS_singleton.html:46 Uncaught RangeError: Maximum call stack size exceeded”//堆栈溢出的错误。alert("xiaozhangjia"+xiaozhangjia.create()); //开始产门var xiaolijia =new BB.makeDoor('绚丽');//小李家也需要建门,alert("xiaolijia"+xiaolijia.create()); </script>
JavaScript 设计模式之构造函数模式相关推荐
- javascript --- 设计模式之构造函数模式
在JavaScript里,构造函数通常是认为用来实现实例的,JavaScript没有类的概念,但是有特殊的构造函数.通过new关键字来调用定义的否早函数,你可以告诉JavaScript你要创建一个新对 ...
- JavaScript设计模式-享元模式
JavaScript设计模式-享元模式 概念 例子 内部状态与外部状态 享元模式的通用结构 例子 总结 github仓库地址:点击 [设计模式例子](https://github.com/fanhua ...
- JavaScript设计模式--简单工厂模式例子---XHR工厂
JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...
- Javascript 设计模式之代理模式【讲师辅导】-曾亮-专题视频课程
Javascript 设计模式之代理模式[讲师辅导]-969人已学习 课程介绍 随着 javascript ES6/7 的发布,很多老版本的设计模式的实现,今天来看是错误的,将被彻底. ...
- Javascript 设计模式之外观模式【讲师辅导】-曾亮-专题视频课程
Javascript 设计模式之外观模式[讲师辅导]-770人已学习 课程介绍 随着 javascript ES6/7 的发布,很多老版本的设计模式的实现,今天来看是错误的,将被彻底. ...
- JavaScript设计模式总结-组合模式
使用场景 1.对象存在整体-部分的结构,如树.数组等: 2.使用者希望对数据结构中的所有对象统一处理. 需要注意的是 1.组合模式所谓的结构并非"继承",而是"包含&qu ...
- java 懒加载模式_JavaScript面试系列:JavaScript设计模式之桥接模式和懒加载
我写的程序员面试系列文章 Java面试系列-webapp文件夹和WebContent文件夹的区别? 程序员面试系列:Spring MVC能响应HTTP请求的原因? Java程序员面试系列-什么是Jav ...
- Javascript设计模式之——代理模式
最近在读<javascript设计模式与开发实践>,在这里把文中的各种设计模式写出来,以便加深记忆,也可以分享给初学者.如果你不了解设计模式,那么强烈推荐你阅读一下这本书,相信它可以颠覆你 ...
- JavaScript设计模式之策略模式(学习笔记)
在网上搜索"为什么MVC不是一种设计模式呢?"其中有解答:MVC其实是三个经典设计模式的演变:观察者模式(Observer).策略模式(Strategy).组合模式(Composi ...
最新文章
- wget java 1.7_linux下安装和配置jdk1.7
- 稳定匹配算法python实现
- C++学习之路 | PTA乙级—— 1091 N-自守数 (15 分)(精简)
- mysql 查新格式化_mysql 日期格式化查询
- js识别用户设备是移动端手机时跳转到手机网站
- Dell安装Ubuntu教程
- python re模块的(...),group(),groups()
- 用U880做热点 使电脑上网(绑定usb和便携式wlan热点)
- 无线路由器桥接——手机连不上网
- PMI第七章 挣值分析
- 计算机安全证书有问题怎么办,此网站的安全证书有问题如何取消 此网站的安全证书有问题解决方法...
- 计算机组成原理第三部: 总线与IO系统
- 表达式运算(包含大整数加减乘)
- cbrt c语音_cbrt (Numerics) – C 中文开发手册 - Break易站
- mysql rds备份_云数据库RDS如何进行数据备份
- 教程:微信公众号的链接如何提取出来?非常简单!
- 关于嵌入式驱动开发,这篇文章让你了解透彻!
- Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群
- 用python将多张图片拼接成一张
- 2021年度测试行业调查问卷
热门文章
- GPU Gems1 - 21 实时辉光(Real-Time Glow)
- signature=f2388c4f1bce538cc797410d9560f03b,KSHV strategies for host dsDNA sensing machinery
- PCA的原理及MATLAB实现
- Scanner类+Random
- webstrom打开通过顶部浏览器打开网页,被跳转到默认主页
- Java核心技术笔记——第 12 章 反射
- 程序设计入门-C语言基础知识-翁恺-第六周:数组-详细笔记(六)
- 【bzoj4712】洪水
- servlet面试常考 (转载)
- Selenium 中文API