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面试题与Javascript词法作用域说明
Nov 09 Javascript
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
js改变鼠标的形状和样式的方法
Mar 31 Javascript
JavaScript输出当前时间Unix时间戳的方法
Apr 06 Javascript
被遗忘的javascript的slice() 方法
Apr 20 Javascript
基于Javascript实现的不重复ID的生成器
Dec 25 Javascript
JS实现touch 点击滑动轮播实例代码
Jan 19 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
Sep 28 Javascript
Angular实现的简单定时器功能示例
Dec 28 Javascript
js实现全选和全不选功能
Jul 28 Javascript
Vuex实现购物车小功能
Aug 17 Javascript
Vue中使用JsonView来展示Json树的实例代码
Nov 16 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实现通用alert函数的方法
2015/03/11 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
Python创建模块及模块导入的方法
2015/05/27 Python
python函数局部变量用法实例分析
2015/08/04 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
Python自定义简单图轴简单实例
2018/01/08 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
白酒市场营销方案
2014/02/25 职场文书
城管综合整治方案
2014/05/01 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
MySQL 数据丢失排查案例
2021/05/08 MySQL
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技
Golang流模式之grpc的四种数据流
2022/04/13 Golang