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 相关文章推荐
JavaScript 存在陷阱 删除某一区域所有节点
May 10 Javascript
javascript 事件处理示例分享
Dec 31 Javascript
详解JS中的柯里化(currying)
Aug 17 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 Javascript
JavaScript实现左侧菜单效果
Dec 14 Javascript
更改BootStrap popover的默认样式及popover简单用法
Sep 13 Javascript
微信小程序图片加载失败时替换为默认图片的方法
Dec 09 Javascript
Vue 图片压缩并上传至服务器功能
Jan 15 Javascript
taro 实现购物车逻辑的实例代码
Jun 05 Javascript
jQuery实现简单飞机大战
Jul 05 jQuery
基于JavaScript实现简单扫雷游戏
Jan 02 Javascript
JavaScript Dom实现轮播图原理和实例
Feb 19 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 运行效率总结(提示程序速度)
2009/11/26 PHP
ajax实现无刷新分页(php)
2010/07/18 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
jquery使用经验小结
2015/05/20 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
js实现盒子滚动动画效果
2020/08/09 Javascript
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
快速了解Python相对导入
2018/01/12 Python
解析python的局部变量和全局变量
2019/08/15 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
《会变的花树叶》教学反思
2014/02/10 职场文书
小学亲子活动总结
2014/07/01 职场文书
项目安全员岗位职责
2015/02/15 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
Matlab如何实现矩阵复制扩充
2021/06/02 Python