1. 工厂模式

 function createPerson(name, age)
{
var obj = {};
obj.name = name;
obj.age = age;
obj.getName = function(){
return this.name;
};
return obj;
} var person = createPerson('leon', 30);

2. 构造函数模式

 function Person(name, age)
{
this.name = name;
this.age = age;
this.getName = function(){
return this.name;
};
} var person = new Person('leon', 30 );

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

 function Person(){

 }

 Person.prototype = {
constructor: Person,
name: 'leon',
age: 30,
getName: function(){
return this.name;
}
}; var person = new Person();

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

 function Person(name, age)
{
this.name = name;
this.age = age;
} Person.prototype = {
constructor: Person,
getName : function(){
return this.name;
}
}; var person = new Person('leon', 30 );

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

 function Person(name, age)
{
this.name = name;
this.age = age;
if( typeof this.getName != 'function'){
Person.prototype.getName = function(){
return this.name;
}
}
}

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);

javascript 高级编程系列 - 创建对象的更多相关文章

  1. javascript 高级编程系列 - 继承

    1. 原型链继承 (缺点:子类继承父类的引用类型的属性值会在各个实例中共享,创建子类实例时无法向父类构造函数传递参数) // 定义父类构造函数 function SuperClass(father, ...

  2. javascript 高级编程系列 - 基本数据类型

    javascript中的基本数据类型包括: Undefined, Null, Boolean, Number, String 5种数据类型 1. Undefined 类型 (只有一个值 undefin ...

  3. javascript 高级编程系列 - 函数

    一.函数创建 1. 函数声明 (出现在全局作用域,或局部作用域) function add (a, b) { return a + b; } function add(a, b) { return a ...

  4. javascript高级编程笔记01(基本概念)

    1.在html中使用JavaScript 1.  <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...

  5. JavaScript高级编程———JSON

    JavaScript高级编程———JSON < script > /*JSON的语法可以表达一下三种类型的值 简单值:使用与javas相同的语法,可以在JSON中表达字符串.数值.布尔值和 ...

  6. JavaScript高级编程———基本包装类型String和单体内置对象Math

    JavaScript高级编程———基本包装类型和单体内置对象 <script> var stringObject = new String("hello world") ...

  7. JavaScript高级编程——Date类型

    JavaScript高级编程——Date类型 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...

  8. JavaScript高级编程——Array数组迭代(every()、filter()、foreach()、map()、some(),归并(reduce() 和reduceRight() ))

    JavaScript高级编程——Array数组迭代(every().filter().foreach().map().some(),归并(reduce() 和reduceRight() )) < ...

  9. JavaScript高级编程——引用类型、Array数组使用、栈方法

    JavaScript高级编程——引用类型.Array数组使用.栈方法 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...

随机推荐

  1. Xcode中断点的使用

    注:本文由破船译自:albertopasca.本文由HoNooD在iosfeed站点上做了推荐. 这里先推荐两篇Xcode相关的文章: Xcode Code Snippets iOS调试 — 基本技巧 ...

  2. C++之Effective STL学习笔记Item14

    使用reserve来避免不必要的重新分配! The reserve member function allows you to minimize the number ofreallocations ...

  3. 337. House Robber III(包含I和II)

    198. House Robber You are a professional robber planning to rob houses along a street. Each house ha ...

  4. wireshark推荐书籍

    1 wireshark数据包分析实战 有中文版 2 wireshark网络分析 英文版 3 TCP/IP协议栈详解卷一

  5. 从实际案例聊聊Java应用的GC优化

    转自美团点评技术博客:https://tech.meituan.com/jvm_optimize.html 当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步 ...

  6. jquery 选择器加变量

    var $role_id = btn.parent().prev().prev().attr('id') var $department_id = btn.parent().prev().prev() ...

  7. spring执行事务提交后进行一些逻辑操作

    在使用spring事务时,我们通常会把事务内的所有操作当成是一个原子操作.也就是当整个事务内的所有代码都执行完成后, 才会将所有的数据落实到数据库中.这样做有时也会给我们造成麻烦.比如以下场景: 根据 ...

  8. 【BZOJ3524】Couriers(主席树)

    题意:给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. n,m≤5000 ...

  9. 转 #HTTP协议学习# (一)request 和response 解析

    http://www.cnblogs.com/bukudekong/p/3834020.html #HTTP协议学习# (一)request 和response 解析   注:本文转自:http:// ...

  10. 在AxureRP8中实现广告文字滚动效果

    本文是实现动态文字在一个区域中滚动的效果,大概实现过程如下: 先准备一个区域,然后让文字在该区域内水平移动,本文是实现了从右到左的轮询的效果,其他雷同. 在Axure中,这种移动的过程需要动态移动,利 ...