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增加join方法的实现代码
Nov 28 Javascript
JavaScript入门之事件、cookie、定时等
Oct 21 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
Javascript获取HTML静态页面参数传递值示例
Aug 18 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
Feb 04 Javascript
基于JavaScript实现一定时间后去执行一个函数
Dec 14 Javascript
json实现添加、遍历与删除属性的方法
Jun 17 Javascript
微信小程序-获得用户输入内容
Feb 13 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
May 03 Javascript
动态加载JavaScript文件的3种方式
May 05 Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
Sep 21 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
解决GD中文乱码问题
2007/02/14 PHP
php自动加载机制的深入分析
2013/06/08 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
JS中作用域以及变量范围分析
2020/07/18 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
python发送邮件接收邮件示例分享
2014/01/21 Python
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
高一地理教学反思
2014/01/18 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
推广普通话标语
2014/06/27 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
优秀教师先进材料
2014/12/16 职场文书
大一学生个人总结
2015/02/15 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
数据库连接池
2021/04/06 MySQL
解决golang 关于全局变量的坑
2021/05/06 Golang
Python函数中的不定长参数相关知识总结
2021/06/24 Python
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫