1 构造函数模式

var Person = function(name){
this.name = name;
this.getName = function(){
console.log(this.name);
}
}; var Person1= new Person('xiaoming');
Person1.getName();
var Person2 = new Person('xiaohua');
Person2.getName();

使用构造函数模式可以实现重复创建多个相似对象,且可以实现自定义传参,但缺点是每次实例化一个对象时就相当于将该对象方法重新创建了一遍。

 2 原型模式

var Person = function(){
};
Person.prototype.name = 'xiaoming';
Person.prototype.getName = function() {
console.log(this.name);
}; var Person1 = new Person();
Person1.getName();
var Person2 = new Person();
Person2.getName();

原型模式的优点在于,每次实例化一个对象时,不需要重新创建该对象方法,而是通过指针引用原型链的方法,缺点是不能自定义传参,所以就有了下面的构造函数和原型组合使用的模式
 3 构造函数+原型模式

var Person = function(name){
this.name = name;
}; Person.prototype.getName = function() {
console.log(this.name);
}; var Person1 = new Person('xiaoming');
Person1.getName();
var Person2 = new Person('xiaohua');
Person2.getName();

综合了构造函数和原型模式的双方优点
4 工厂模式

function createPerson(name){
var Person = new Object();
Person.name = name;
Person.getName = function(){
console.log(this.name);
}
return Person;
} var Person1= createPerson('xiaoming');
Person1.getName();
var Person2= createPerson('xiaohua');
Person2.getName();

工厂模式也可以用于创建多个相似对象,与构造函数函数模式相似,主要区别是在内部通过new Object()创建对象最后return 出来,但是存在无法判断对象类型的问题

5 模块模式

var person = function(name){

function getName(name){
console.log(name);
} return {
getName: getName
}
}(); person.getName('xiaoming');

特别是在单页应用中常用的模式,可以理解为引入了私有变量特权方法的单例。

最新文章

  1. C# 自定义文件图标 双击启动 (修改注册表)
  2. bootstrap-markdown编辑器引入
  3. Python初学的易犯错误
  4. avalon全选效果分析讲解
  5. Linux下的应用程序性能分析 总结
  6. Glyphicons字体图标
  7. firefox如何禁用JavaScript
  8. 30天,O2O速成攻略【8.30南京站】
  9. shell 下的$符合
  10. Ubuntu 14.10 下grep命令详解
  11. 自制docker basic image
  12. Java [leetcode 30]Substring with Concatenation of All Words
  13. HDU 4337 King Arthur's Knights 它输出一个哈密顿电路
  14. 兔子--Fragment与ViewPager要切换滑动效果
  15. 04_Nginx命令行参数,控制信号,Nginx启动、停止、重启命令
  16. TGI
  17. Python内置函数之-property
  18. Vue.js——快速入门Vuex
  19. 更新VS2017会出现“请更新 Visual Studio 安装程序 再继续” 提示
  20. 排序算法之选择排序的思想以及Java实现

热门文章

  1. cdnbest区域自定义配置里添加防xss攻击配置
  2. Rancher 2.0 简单使用 重要部分截取
  3. python的魔术方法
  4. python—切片
  5. 547. Friend Circles 求间接朋友形成的朋友圈数量
  6. Agile PLM 开发中AgileAPI类型对应控制台分类说明
  7. Job for ssh.service failed because the control process exited with error code.......
  8. ionic3使用第三方图标
  9. centos平台基于snort、barnyard2以及base的IDS(入侵检测系统)的搭建与测试及所遇问题汇总
  10. zeromq学习记录(六)C语言示例