JavaScript设计模式之构造函数模式实例教程


Posted in Javascript onJuly 02, 2018

本文实例讲述了JavaScript设计模式之构造函数模式。分享给大家供大家参考,具体如下:

一、构造函数模式概念

构造函数用于创建特定类型的对象——不仅声明了使用过的对象,构造函数还可以接受参数以便第一次创建对象的时候设置对象的成员值。你可以自定义自己的构造函数,然后在里面声明自定义类型对象的属性或方法。

在JavaScript里,构造函数通常是认为用来实现实例的,JavaScript没有类的概念,但是有特殊的构造函数。通过new关键字来调用自定义的构造函数,在构造函数内部,this关键字引用的是新创建的对象。

二、构造函数模式的作用和注意事项

模式作用:

1.用于创建特定类型的对象

2.第一次声明的时候给对象赋值

3.自己声明构造函数,赋予属性和方法

注意事项:

1.声明函数的时候处理业务逻辑

2.区分和单例的区别,配合单例实现初始化

3.构造函数大写字母开头

三、构造函数模式代码和实战总结

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>构造函数模式</title>
</head>
<body>
<!--<script>
  function Car(model,year,miles){
    if(!(this instanceof Car)){
      return new Car(model,year,miles);
    }
    this.model = model;
    this.year = year;
    this.miles = miles;
    this.output = function(){
      return this.model + "走了" + this.miles + "公里";
    }
  }
  var tom = new Car("大叔",2009,20000);
  var dudu = Car("Dudu",2010,5000);
  console.log(typeof tom);
  console.log(tom.output());
  console.log(typeof dudu);
  console.log(dudu.output());
</script>-->
<script>
  //1.用于创建特定类型的对象
  //2.这样的函数名会被人笑话
  //3.js开发的时候写单引号
  //4.js里构造函数比较特殊的地方 new
  //5.其他的语言里 比如PHP 里人家实现 有一个关键字 A class
  //6.zaomen就是构造函数 他又充当了类的概念
  var AA = {
    zaomen:function(huawen) {
      if (!(this instanceof AA.zaomen)) {
        console.log(123);
        return new AA.zaomen(huawen);
      };
      var _huawen = "普通";
      if (huawen) {
        _huawen = huawen;
      }
      this.suo = "普通";
      this.huawen = _huawen;
      this.create = function () {
        return "【锁头】" + this.suo + "【花纹】" + this.huawen;
      }
    }
  };
  var BB = {
    zaomen:function(huawen,suo) {
      if (!(this instanceof BB.zaomen)) {
        return new BB.zaomen(huawen,suo);
      };
      var _huawen = "普通";
      if (huawen) {
        _huawen = huawen;
      }
      this._suo = "普通";
      if (suo) {
        _suo = suo;
      }
      this.suo = _suo;
      this.huawen = _huawen;
      this.create = function () {
        return "【锁头】" + this.suo + "【花纹】" + this.huawen;
      }
    }
  };
  /*function zaomen(huawen){
    if(!(this instanceof zaomen)){
      return new zaomen();
    }
    var _huawen = "普通";
    if(huawen){
      _huawen = huawen;
    }
    this.suo = "普通";
    this.huawen = _huawen;
    this.create = function(){
      return "【锁头】" + this.suo + "【花纹】" + this.huawen;
    }
  }*/
  var xiaozhang = AA.zaomen();
  alert("xiaozhang" + xiaozhang.create());
  var xiaoli = BB.zaomen("绚丽",'123');
  alert("xiaoli" + xiaoli.create());
</script>
</body>
</html>

使用在线HTML/CSS/JavaScript代码运行工具 http://tools.3water.com/code/HtmlJsRun测试运行效果如下:

JavaScript设计模式之构造函数模式实例教程

JavaScript设计模式之构造函数模式实例教程

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js+CSS 图片等比缩小并垂直居中实现代码
Dec 01 Javascript
javascript eval和JSON之间的联系
Dec 31 Javascript
javascript基础第一章 JavaScript与用户端
Jul 22 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
May 30 Javascript
node.js WEB开发中图片验证码的实现方法
Jun 03 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
Sep 06 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
jquery中done和then的区别(详解)
Dec 19 jQuery
vue配置请求本地json数据的方法
Apr 11 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
Apr 26 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
Jul 20 Javascript
vue-router 源码实现前端路由的两种方式
Jul 02 #Javascript
React Native基础入门之调试React Native应用的一小步
Jul 02 #Javascript
vue-router 源码之实现一个简单的 vue-router
Jul 02 #Javascript
JavaScript设计模式之单例模式简单实例教程
Jul 02 #Javascript
JavaScript设计模式之建造者模式实例教程
Jul 02 #Javascript
JS实现的JSON序列化操作简单示例
Jul 02 #Javascript
JS内部事件机制之单线程原理
Jul 02 #Javascript
You might like
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
php简单生成随机数的方法
2015/07/30 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
layui实现数据分页功能
2019/07/27 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python编码类型转换方法详解
2016/07/01 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
django中模板的html自动转意方法
2018/05/27 Python
python对csv文件追加写入列的方法
2019/08/01 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
python实现门限回归方式
2020/02/29 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
美国轮胎网站:Priority Tire
2018/11/28 全球购物
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
解释下面关于J2EE的名词
2013/11/15 面试题
信息系统专业个人求职信范文
2013/12/07 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
小学教师教学随笔
2015/08/14 职场文书
少先队大队委竞选口号
2015/12/25 职场文书