1.工厂模式

function a(name){
var b = new object();
b.name = name;
b.say = function(){
alert(this.name);
}
return b
}

函数内部产生b对象并返回。

2.构造函数模式

function Person(name, url) {    //注意构造函数名第一个字母大写
this.name = name;
this.url = url;
this.alertUrl = alertUrl;
} function alertUrl() {
alert(this.url);
}

因为每构造一个对象就会生成一个alertUrl方法,这样太浪费资源空间,所以把alertUrl这个方法写在全局以节省空间,但这样写就违背了面向对象编程的初衷,下面的原型模式就更好一些。

3.原型模式

function Person(){
} Person.prototype.name = "bill";
Person.prototype.address = "GuangZhou";
Person.sayName = function (){
alert(this.name);
} var person1 = new Person();
var person2 = new Person(); //测试代码
alert(person1.name); // bill
alert(person2.name); // bill
person1.sayName(); //bill
person2.sayName(); //bill person1.name = "666"; alert(person1.name); //
alert(person2.name); // bill
person1.sayName(); //
person2.sayName(); //bill

我们创建的每个函数都有prototype(原型)属性,这个属性其实是一个指针,指向一个对象。

当构造一个person对象例如person1之后,它的默认name属性就是bill。如果要改name值的话就要对person1.name操作。这只是改了这个对象的name属性。alert(person1.prototype.name)依然是弹出bill,即原型上的name属性

注:这只是本人学习的一些总结,如果有不对的地方还请各位大腿指正!

最新文章

  1. ceph官网的ceph块设备(二)——快照相关
  2. ww
  3. mybatis中foreach的用法(转)
  4. 微软TechEd2013大会将在北京、上海召开!
  5. sgu 194 Reactor Cooling(有容量上下界的无源无汇可行流)
  6. c# List Sort排序
  7. Square(强大的剪枝)
  8. C#垃圾回收
  9. TCP为什么需要3次握手与4次挥手(转载)
  10. svnserve.conf: Option expected的问题解决方法
  11. UNIX网络编程——TCP 滑动窗口协议
  12. 折腾Java设计模式之策略模式
  13. Python运算符——复合运算符
  14. SQLServer2008 查询分析器内容未保存,查找分析器内容
  15. 二叉树,B树,B+树,红黑树 简介
  16. django 参考
  17. WinSCP命令行操作
  18. $.ajax dataType设置为json 回调函数不执行
  19. 怎么将unbuntu Linux iOS 文件从U盘或者移动硬盘启动?用win32diskimager_cn
  20. 解决Chrome下表单自动填充后背景色为黄色

热门文章

  1. 淘宝npm镜像使用
  2. vs2010 C++创建和使用动态链接库(dll)
  3. LeetCode 430. Flatten a Multilevel Doubly Linked List
  4. vb编写串口调试程序
  5. centos6.5 ifconfig没有ipv4地址
  6. python模块--os模块的用法
  7. Google Chrome 总提示flash插件过期,用命令行模式解决
  8. F4NNIU 版本的标准电阻列表(2018-09-29 更新)
  9. laravel 中事务的使用
  10. AngularJS.js: temple