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如何设置在iframe框架中指定div不显示
Dec 04 Javascript
一个不错的js html页面倒计时可精确到秒
Oct 22 Javascript
详解JavaScript中getFullYear()方法的使用
Jun 10 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
javascript定义类和类的实现实例详解
Dec 01 Javascript
js实现无缝滚动图
Feb 22 Javascript
vue.js实现条件渲染的实例代码
Jun 22 Javascript
js 概率计算(简单版)
Sep 12 Javascript
Angular中管道操作符(|)的使用方法
Dec 15 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
Dec 18 jQuery
vue中动态select的使用方法示例
Oct 28 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
Nov 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四舍五入精确小数位及取整
2014/01/14 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
详解Python中with语句的用法
2015/04/15 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
授权委托书格式范文
2014/08/02 职场文书
快递员岗位职责
2014/09/12 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
皇城相府导游词
2015/02/06 职场文书
礼仪培训心得体会
2016/01/22 职场文书
python unittest单元测试的步骤分析
2021/08/02 Python