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 相关文章推荐
javascript+xml技术实现分页浏览
Jul 27 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
Nov 28 Javascript
异步加载script的代码
Jan 12 Javascript
单击按钮显示隐藏子菜单经典案例
Jan 04 Javascript
extjs 分页使用jsp传递数据示例
Jul 29 Javascript
setinterval()与clearInterval()JS函数的调用方法
Jan 21 Javascript
js实现日历的简单算法
Jan 24 Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
浅谈vue-lazyload实现的详细过程
Aug 22 Javascript
jQuery实现对网页节点的增删改查功能示例
Sep 18 jQuery
React Native中TabBarIOS的简单使用方法示例
Oct 13 Javascript
详解Vue组件之间通信的七种方式
Apr 14 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无限级分类实现评论及回复功能
2019/02/18 PHP
js同时按下两个方向键
2007/12/01 Javascript
通用JS事件写法实现代码
2009/01/07 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Pycharm远程调试openstack的方法
2017/11/21 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
用Python解决x的n次方问题
2019/02/08 Python
对python周期性定时器的示例详解
2019/02/19 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
求职简历推荐信范文
2013/12/02 职场文书
创先争优标语
2014/06/27 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
个人廉洁自律总结
2015/03/06 职场文书