javascript创建对象之原型模式(三)
2014-03-10 16:53
375 查看
少废话,先上代码:
prototype是javascript中非常核心的知识点之一.他是javascript中的面向对象思想中起着至关重要的作用.
我们来看看prototype是何方妖孽,拥有如此大的威力.
js中每一个函数都有一个prototype属性,我们称之为原型.(这个解释有点烂,等于没说,没办法,不知道怎么给他下定义了^_^);
使用原型对象的好处之一就是让所有的实例共享同样的位于原型上的属性和方法.
上面例子中,name,sex,say都位于prototype上,所以man和woman共享这些属性和方法.内存中虽然有了2个实例,但是他们却只有一份name和sex和say.
这在复杂的项目中可谓是极大的节省了内存.
也因为如此,原型模式才更优胜于上章节介绍的构造函数模式.
这种简单的原型模式一眼就能看出有很多不切合实际的东东:
1.既然所有的属性和方法都共享了,那么我实例化一个对象不就够了吗?
2.每一个对象都是一个个体(有自己特有的属性或方法),而又有相似性(共同的属性和方法),
接下来就有了构造函数模式和原型模式共同作用的结果.这种组合模式在下一章继续.
function Human() { } Human.prototype.name = "成吉思汗"; Human.prototype.sex = "男"; Human.prototype.say = function () { alert(this.name); } var man = new Human(); man.say(); //成吉思汗 var woman = new Human(); woman.say(); //成吉思汗 alert(man.say == woman.say);//true
prototype是javascript中非常核心的知识点之一.他是javascript中的面向对象思想中起着至关重要的作用.
我们来看看prototype是何方妖孽,拥有如此大的威力.
js中每一个函数都有一个prototype属性,我们称之为原型.(这个解释有点烂,等于没说,没办法,不知道怎么给他下定义了^_^);
使用原型对象的好处之一就是让所有的实例共享同样的位于原型上的属性和方法.
上面例子中,name,sex,say都位于prototype上,所以man和woman共享这些属性和方法.内存中虽然有了2个实例,但是他们却只有一份name和sex和say.
这在复杂的项目中可谓是极大的节省了内存.
也因为如此,原型模式才更优胜于上章节介绍的构造函数模式.
这种简单的原型模式一眼就能看出有很多不切合实际的东东:
1.既然所有的属性和方法都共享了,那么我实例化一个对象不就够了吗?
2.每一个对象都是一个个体(有自己特有的属性或方法),而又有相似性(共同的属性和方法),
接下来就有了构造函数模式和原型模式共同作用的结果.这种组合模式在下一章继续.
相关文章推荐
- 【JS】JavaScript中对象的创建与原型模式
- JavaScript中创建对象的方法:工厂模式,构造函数模式, 原型模式
- JavaScript之面向对象学习七(动态原型模式、寄生构造函数模式、稳妥构造函数模式创建自定义类型)
- JavaScript中创建对象的几种模式(原型)--源自技术
- JavaScript创建对象(三)——原型模式
- JavaScript创建对象 —— 原型模式
- Javascript之创建对象(原型模式)
- 一步步学习javascript基础篇(4):面向对象设计之创建对象(工厂、原型和构造函数等模式)
- JavaScript高级程序设计之面向对象的程序设计之创建对象之组合使用构造函数模式和原型模式 第6.2.4讲笔记
- JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象
- JavaScript 创建对象--组合使用构造函数模式和原型模式
- javascript创建对象——组合使用构造函数和原型模式
- javascript中组合使用构造函数模式和原型模式创建对象
- JavaScript 创建对象---原型模式
- JavaScript 创建对象---动态原型模式
- Javascript---字面量创建对象、组合构造函数+原型模式、动态原型模式
- javascript创建对象之动态原型模式(五)
- javascript创建对象之动态原型模式(五)
- javascript中原型模式创建对象特点分析
- JavaScript构造函数+原型创建对象,原型链+借用构造函数模式继承父类练习