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 相关文章推荐
浅析Cookie中的Path与domain
Dec 18 Javascript
JS文本获得焦点清除文本文字的示例代码
Jan 13 Javascript
使用jquery动态加载js文件的方法
Dec 24 Javascript
详谈javascript中DOM的基本属性
Feb 26 Javascript
纯javascript实现图片延时加载方法
Aug 21 Javascript
Angularjs实现mvvm式的选项卡示例代码
Sep 08 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
js实现1,2,3,5数字按照概率生成
Sep 12 Javascript
javascript防抖函数debounce详解
Jun 11 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 Javascript
微信公众号平台接口开发 菜单管理的实现
Aug 14 Javascript
Vue自定义组件双向绑定实现原理及方法详解
Sep 03 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php文档更新介绍
2011/07/22 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
清空上传控件input file的值
2010/07/03 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
深入理解Vue Computed计算属性原理
2018/05/29 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
Python 常用string函数详解
2016/05/30 Python
python制作图片缩略图
2019/04/30 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
毕业生求职简历的自我评价
2013/10/23 职场文书
幼儿教师国培感言
2014/02/19 职场文书
购房意向书
2014/04/01 职场文书
个人评语大全
2014/05/04 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
美容院员工规章制度
2015/08/05 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript