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

最新文章

  1. class写法[tip]
  2. Linux 基础笔记
  3. 不用画线 设置UITableView的全屏分隔线
  4. Java Web学习笔记-Servle生命周期
  5. C# 數據事務操作
  6. BestCoder17 1001.Chessboard(hdu 5100) 解题报告
  7. 文件/图片,批量上传【神器】--WebUploader
  8. [OC Foundation框架 - 13] NSValue
  9. Android Broadcast Receiver注册
  10. Umbraco Content属性
  11. WPF中如何获取ControlTemplate中的对象
  12. bootstrap错误警告信息提示
  13. Mybatis源码分析-SqlSessionTemplate
  14. Single linked List by pointer
  15. hdu5302 构造
  16. QuickStart系列:docker部署之redis
  17. Mac下安装Eclipse和Tomcat等
  18. Android studio was unable to create a local connection in order...
  19. Codeforces 1006C:Three Parts of the Array(前缀和+map)
  20. SQL入门之查询入门

热门文章

  1. DS博客作业05——树
  2. 【Luogu】P2303Longge的问题(莫比乌斯反演)
  3. BZOJ4816 [Sdoi2017]数字表格 【莫比乌斯反演】
  4. 刷题总结——解方程(NOIP2014)
  5. 【CCF】高速公路 tarjan强连通缩点
  6. django前端渲染多对多关系(比如一本书的作者有哪些)
  7. bzoj 1857 三分套三分
  8. Number Sequence(poj 1019)
  9. Nginx报504 gateway timeout错误的解决方法
  10. js函数的四种调用方式以及对应的this指向