javascript面对对象编程
2012-10-10 09:46
169 查看
在
因此,在
通过这样类似的工厂方法,就可以创建出多个相似的对象了,但是这样的方式其抽象度极低。面向对象编程中,对象是可以检测出类型的,但是采用上面这种方式,是没有办法进行对象类型识别的。
这种模拟类方式的特点就是:
1.没有显示的创建对象
2.直接将属性和方法赋给了
3.没有
JavaScript中是其实不存在所谓“类”的概念,因为它并不是面向对象的语言。在面向对象中,一个最常见的说法就是:“类”是“对象”的模板,基本上都是采用语言内置的
Class或
class关键字来定义“类”。而
JavaScript不存在这个概念,所以也没有提供类似的关键字(虽然
class是
JavaScript的关键字,但是至今都没有实现,只是被保留而已)。
因此,在
JavaScript中创建类就唯有使用模拟的方式,而模拟的手法多种多样,何时采用何种方式最合适,需视情况而定。以下就记录下常见的几种模式。
一.工厂模式
工厂方法是设计模式中非常基础的,也被广泛用于面向对象编程中。而在JavaScript中,通过工厂方法即能模拟出类的行为。
functionPerson(name,sex){
varobj={};
obj.name=name;
obj.sex=sex;
obj.getName=function(){
returnthis.name;
};
returnobj;
}
varpersonA=Person('lucy','male');
varpersonB=Perosn('路人甲','male');
通过这样类似的工厂方法,就可以创建出多个相似的对象了,但是这样的方式其抽象度极低。面向对象编程中,对象是可以检测出类型的,但是采用上面这种方式,是没有办法进行对象类型识别的。
二.构造函数模式
其实,这应该是很常见的模式了,很多书上基本上一来就是讲这个的,更狠点的可能就只讲这个…functionPerson(name,sex){
this.name=name;
this.sex=sex;
…
this.getName=function(){
returnthis.name;
}
}
varpersonA=newPerson('lucy','male');
varpersonB=newPerson('路人甲','male');
这种模拟类方式的特点就是:
1.没有显示的创建对象
2.直接将属性和方法赋给了
this对象
3.没有
return字句
在使用这种方式时,创建对象则必须使用
new关键字。当然,好处就是完全解决了对象类型识别问题。
三.原型模式
原型应该是JavaScript中一个很有意思,当然也是很有用的一个概念了。接下来用原型模式来模拟类。
functionPerson(){}
Person.prototype={
name:null,
sex:null,
getName:function(){
returnthis.name;
}
};
varpersonA=newPerson;
personA.name='lucy';
personA.sex='male';
varpersonB=newPerson;
personB.name='路人甲';
personB.sex='male';
四.组合使用构造函数和原型模式
由于只用原型模式的话,会带来一些问题,所以常规情况下,都是采用组合构造函数和原型模式来创建类,这也是使用率最高的一种方式。functionPerson(name,sex){
this.name=name;
this.sex=sex;
…
}
Person.prototype.getName=function(){
returnthis.name;
};
…
varpersonA=newPerson('lucy','male');
varpersonB=newPerson('路人甲','male');
personA.getName();//"heroic"
相关文章推荐
- javascript面对对象编程 之继承
- javascript面对对象编程 之继承
- Lua 使用OOP(面对对象思想编程),免Binding创建自定义lua类
- 浅谈Perl的类、包、模块与面对对象编程
- 深入剖析JavaScript编程中的对象概念
- (二)JavaScript中的面对对象
- 【JavaScript】DOM编程-DHTML与Windows对象
- JavaScript事件编程入门案例和对对象属性的遍历
- 跟着百度学PHP[4]OOP面对对象编程-13-魔术方法__set(),__get(),__isset(),__unset()
- 总结两个Javascript的哈稀对象的一些编程技巧
- Boolan-C++开发工程师-C++面对对象高级编程(上)- 第三周笔记
- 跟着百度学PHP[4]OOP面对对象编程-14-克隆对象__clone()方法
- Javascript 模块化编程(对象写法)
- python基础(面对对象编程进阶)
- javascript生成对象编程模式
- JavaScript网页编程之------浏览器对象模型(BOM)
- JavaScript面相对象编程实践
- JavaScript服务器编程(对象属性枚举中应当避免原型污染问题)
- JavaScript高级编程【BOM-location对象】
- Javascript的面对对象的理解 【上】(prototype,函数和对象等概念)