javascript 高级编程系列 - 创建对象
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 高级编程系列 - 创建对象相关推荐
- JavaScript高级编程 III
原文地址:http://www.onlamp.com/pub/a/onlamp/2007/11/20/advanced-javascript-iii.html JavaScript高级编程I:http ...
- Javascript模块化编程系列二: 模块化的标准化(CommonJS AMD)
前言 Javascript模块化编程系列一: 模块化的驱动 在前一篇介绍了为什么要进行Javascript模块化编程.至于如何实现模块化,不同的开发组织和个人具体的实现方式肯定是不一样.如何统一一个规 ...
- JavaScript 高级编程(二)
JavaScript 高级编程(二) BOM 一套操作浏览器的API. 常见对象 window: 代表整个浏览器窗口 注意: window是BOM中的一个对象, 并且是一个顶级的对象(全局) Navi ...
- javascript高级编程教程,javascript基础入门案例
谁有比较好的javascript视频教程 李炎恢的javascript教程,在verycd上可以下载. 结合<javascript高级程序设计>学习,应该会比较好,他这个教程就是参考了&l ...
- 【读书笔记】JavaScript高级编程(二)
2019独角兽企业重金招聘Python工程师标准>>> 书中第3章 基本概念摘要(一) 3.3 变量 使用var操作符定义的变量将成为定义该变量的作用域中的局部变量.也就是说,如果在 ...
- c#之跟踪(c#高级编程系列)
今天开始看C#高级编程书中的跟踪和事件这一章了,可是书上的内容感觉上很抽象.google了一下这部分的内容,找到的都是关于Debug类和 Trace类的信息,看了微软提供的帮助和支持文档,感觉这两个类 ...
- Javascript模块化编程系列一: 模块化的驱动
Javascript 函数编程 初涉Javascript ,会以为Javascript 是面向过程的编程语言, 和C类似,使用函数来达成效果. <!--Add by oscar999--> ...
- Javascript高级编程学习笔记(20)—— 创建对象
由于今天有点事,加上对象原型链的东西有点多,所以今天这篇就讲一个小的知识点吧 也算为明天的对象继承做铺垫 工厂模式 虽然使用对象字面量来创建一个对象十分地便捷,但是这个方法有一个显著的缺点 那就是如果 ...
- javascript高级编程学习笔记(二)——继承
2019独角兽企业重金招聘Python工程师标准>>> 写读书笔记的好处在于加深记忆,前一篇总结了编程中创建的对象的几种方式,以及常用的方式,这一篇总结实现继承的方式: 1.对象冒充 ...
- JavaScript高级编程设计(第三版)——第二章:在html中使用javaScript
系列文章目录 第三章:基本概念 目录 系列文章目录 前言 一.javaScript是什么? 1.有两种引入方式 1.1 嵌入式 1.2 外部引入 1.3 noscript标签 标签 1.4文档模式 2 ...
最新文章
- 中断原理在计算机中的应用,计算机组成原理期末考试简答题重点
- Halcon - 定位 - 卡尺
- 【JAVA编码专题】UNICODE,GBK,UTF-8区别
- linux操作系统中的shell编程----基于头歌实践教学编写shell脚本测试结果
- jquery 1~6
- 计算机操作系统汤小丹版课后答案
- css宋体代码_css中宋体怎么设置?
- C语言中自定义的标识符
- Google 手機程式設計
- 现场总线---can总线
- 身为一名Java程序员,在面试的时候常常被问到的,下面我总结一些常常别问到的问题。
- mysql 加权_mysql/stats:加权平均值以突出平均值的差异
- 《8问》| 程晓明:未来一定有世界货币,关键在于设计逻辑
- 超算优化重在存储,DAOS助力瑞金打造先进的生信大数据平台
- aardio - 伪装进程测试
- CCRC认证是什么,ISCCC与CCRC是什么关系?
- 专题2:matlab矩阵处理
- ffmpeg实战教程(五)libswscale,libavfilter实践指南
- BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心【HDFS存储和MapReduce计算】)、深入理解、下载、案例应用之详细攻略
- STM32的SRAM