javascript创建对象之原型模式(三)
少废话,先上代码:
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.每一个对象都是一个个体(有自己特有的属性或方法),而又有相似性(共同的属性和方法),
接下来就有了构造函数模式和原型模式共同作用的结果.这种组合模式在下一章继续.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。