1. 工厂模式

 1 function createPerson(name, age)
 2  {
 3      var obj = {};
 4      obj.name = name;
 5      obj.age = age;
 6      obj.getName = function(){
 7          return this.name;
 8      };
 9      return obj;
10 }
11
12 var person = createPerson('leon', 30);

2. 构造函数模式

 1 function Person(name, age)
 2 {
 3     this.name = name;
 4     this.age = age;
 5     this.getName = function(){
 6         return this.name;
 7     };
 8 }
 9
10 var person = new Person('leon', 30 );

3. 原型模式 (多个对象实例之间共享属性值和方法)

 1 function Person(){
 2
 3 }
 4
 5 Person.prototype = {
 6      constructor: Person,
 7      name: 'leon',
 8      age: 30,
 9      getName: function(){
10          return this.name;
11      }
12 };
13
14 var person = new Person();

4. 组合构造函数和原型模式 (构造函数模式与原型模式的结合,属性在构造函数中进行定义,方法在原型中定义)

 1 function Person(name, age)
 2 {
 3      this.name = name;
 4      this.age = age;
 5 }
 6
 7 Person.prototype = {
 8     constructor: Person,
 9     getName :  function(){
10           return this.name;
11     }
12 };
13
14 var person = new Person('leon', 30 );

5.动态原型模式 (原型模式的改进为了更好的体现封装)

 1 function Person(name, age)
 2 {
 3       this.name = name;
 4       this.age = age;
 5       if( typeof this.getName != 'function'){
 6           Person.prototype.getName = function(){
 7               return this.name;
 8           }
 9       }
10 }

6. 寄生构造函数模式 (工厂模式与构造函数的结合)

 1 function Person(name, age)2  {3      var obj = {};4      obj.name = name;5      obj.age = age;6      obj.getName = function(){7          return this.name;8      };9      return obj;
10 }
11
12 var person = new Person('leon', 30);

7. 稳妥构造函数模式 (工厂模式的安全版,无公共属性,方法中无this引用)

 1 function Person(name, age)2  {3      var obj = {};4      var name =  name;5      var age  = age;6      obj.getName = function(){7          return name;8      };9      return obj;
10 }
11
12 var person = Person('leon', 30);

转载于:https://www.cnblogs.com/xiaodi-js/p/5926077.html

javascript 高级编程系列 - 创建对象相关推荐

  1. JavaScript高级编程 III

    原文地址:http://www.onlamp.com/pub/a/onlamp/2007/11/20/advanced-javascript-iii.html JavaScript高级编程I:http ...

  2. Javascript模块化编程系列二: 模块化的标准化(CommonJS AMD)

    前言 Javascript模块化编程系列一: 模块化的驱动 在前一篇介绍了为什么要进行Javascript模块化编程.至于如何实现模块化,不同的开发组织和个人具体的实现方式肯定是不一样.如何统一一个规 ...

  3. JavaScript 高级编程(二)

    JavaScript 高级编程(二) BOM 一套操作浏览器的API. 常见对象 window: 代表整个浏览器窗口 注意: window是BOM中的一个对象, 并且是一个顶级的对象(全局) Navi ...

  4. javascript高级编程教程,javascript基础入门案例

    谁有比较好的javascript视频教程 李炎恢的javascript教程,在verycd上可以下载. 结合<javascript高级程序设计>学习,应该会比较好,他这个教程就是参考了&l ...

  5. 【读书笔记】JavaScript高级编程(二)

    2019独角兽企业重金招聘Python工程师标准>>> 书中第3章 基本概念摘要(一) 3.3 变量 使用var操作符定义的变量将成为定义该变量的作用域中的局部变量.也就是说,如果在 ...

  6. c#之跟踪(c#高级编程系列)

    今天开始看C#高级编程书中的跟踪和事件这一章了,可是书上的内容感觉上很抽象.google了一下这部分的内容,找到的都是关于Debug类和 Trace类的信息,看了微软提供的帮助和支持文档,感觉这两个类 ...

  7. Javascript模块化编程系列一: 模块化的驱动

    Javascript 函数编程 初涉Javascript ,会以为Javascript 是面向过程的编程语言, 和C类似,使用函数来达成效果. <!--Add by oscar999--> ...

  8. Javascript高级编程学习笔记(20)—— 创建对象

    由于今天有点事,加上对象原型链的东西有点多,所以今天这篇就讲一个小的知识点吧 也算为明天的对象继承做铺垫 工厂模式 虽然使用对象字面量来创建一个对象十分地便捷,但是这个方法有一个显著的缺点 那就是如果 ...

  9. javascript高级编程学习笔记(二)——继承

    2019独角兽企业重金招聘Python工程师标准>>> 写读书笔记的好处在于加深记忆,前一篇总结了编程中创建的对象的几种方式,以及常用的方式,这一篇总结实现继承的方式: 1.对象冒充 ...

  10. JavaScript高级编程设计(第三版)——第二章:在html中使用javaScript

    系列文章目录 第三章:基本概念 目录 系列文章目录 前言 一.javaScript是什么? 1.有两种引入方式 1.1 嵌入式 1.2 外部引入 1.3 noscript标签 标签 1.4文档模式 2 ...

最新文章

  1. 中断原理在计算机中的应用,计算机组成原理期末考试简答题重点
  2. Halcon - 定位 - 卡尺
  3. 【JAVA编码专题】UNICODE,GBK,UTF-8区别
  4. linux操作系统中的shell编程----基于头歌实践教学编写shell脚本测试结果
  5. jquery 1~6
  6. 计算机操作系统汤小丹版课后答案
  7. css宋体代码_css中宋体怎么设置?
  8. C语言中自定义的标识符
  9. Google 手機程式設計
  10. 现场总线---can总线
  11. 身为一名Java程序员,在面试的时候常常被问到的,下面我总结一些常常别问到的问题。
  12. mysql 加权_mysql/stats:加权平均值以突出平均值的差异
  13. 《8问》| 程晓明:未来一定有世界货币,关键在于设计逻辑
  14. 超算优化重在存储,DAOS助力瑞金打造先进的生信大数据平台
  15. aardio - 伪装进程测试
  16. CCRC认证是什么,ISCCC与CCRC是什么关系?
  17. 专题2:matlab矩阵处理
  18. ffmpeg实战教程(五)libswscale,libavfilter实践指南
  19. BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心【HDFS存储和MapReduce计算】)、深入理解、下载、案例应用之详细攻略
  20. STM32的SRAM

热门文章

  1. [渝粤教育] 西南科技大学 材料力学 在线考试复习资料
  2. 无约束最优化(五) 最小二乘法问题的解法
  3. AtCoder Beginner Contest 136 解题报告
  4. [置顶] asp.net(c#)中相对路径(虚拟路径)和物理磁盘路径的转换
  5. 分层架构(第一张章)
  6. Stream介绍及简单操作!
  7. 给大家推荐一个查变量名的网站
  8. Android初学第32天
  9. VC的function类说明 -- 继续
  10. GPS定位,经纬度附近地点查询–C#实现方法