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 相关文章推荐
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
May 24 Javascript
jquery特效 幻灯片效果示例代码
Jul 16 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
Sep 21 Javascript
javascript转换日期字符串为Date日期对象的方法
Feb 13 Javascript
JavaScript模拟数组合并concat
Mar 06 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
Dec 03 Javascript
详解Vue中使用插槽(slot)、聚类插槽
Apr 12 Javascript
Electron 调用命令行(cmd)
Sep 23 Javascript
JavaScript canvas仿代码流瀑布
Feb 10 Javascript
详解Vue template 如何支持多个根结点
Feb 10 Javascript
vue.js实现双击放大预览功能
Jun 23 Javascript
vue导入.md文件的步骤(markdown转HTML)
Dec 31 Vue.js
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表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
ReactJs设置css样式的方法
2017/06/08 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
Python 连连看连接算法
2008/11/22 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
Python六大开源框架对比
2015/10/19 Python
django输出html内容的实例
2018/05/27 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Django密码存储策略分析
2020/01/09 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
交通事故检查书范文
2014/01/30 职场文书
团队经理竞聘书
2014/03/31 职场文书
安全教育月活动总结
2014/05/05 职场文书
读书之星事迹材料
2014/05/12 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
自主招生学校推荐信
2014/09/26 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
起诉书格式范文
2015/05/20 职场文书
初中数学教学反思范文
2016/02/17 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers