Javascript面向对象编程
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
---->什么是类和对象
这是所有面向对象编程之前必须弄明白的. 所谓类:简单地说就是模板,说的专业一些,是一类具有某种性质的物的集合.比如:人就是一个类,车也是一个类,等等. 所谓对象:就是类的具体实现.如上面所说,人是一个类,一个具体的人就是一个对象,比如张三. 对象是类的实例化后的结果.javascript中使用new关键字来实例化一个类,生成一个对象. 例子: function people(){ //javascript中一个function也是一个类,这里我们建立一个空的类people } var zhangsan=new people; //实例化生成一个对象张三 ---->一个具体形象的例子 /*-->最简单的类: *people类 * 属性:性别,年龄,姓名 * 方法:说话 */ function people(name,sex,age){ this.name=name; this.sex=sex; this.age=age; this.say=function(){ return "我叫"+this.name; } } 使用时: var zhangsan=new people; alert(zhangsan.say()); var lisi=new people; alert(lizi.say()); 说明: 上面使用了this关键字,this总是指向当前的对象,在上面例子中,zhangsan.say中具有this.name,这里的this是当前的对象zhangsan.后面lisi.say则是指向当前对象lisi 对象具有属性,上面的name,sex和age就是对象的属性.我们这样可以访问,如lisi.name,zhangsan.age 对象还具有方法,比如上面的say.方法是通过构造函数实现的.使用时,如上面,用lisi.say(),zhangsan.say() 当然我们还可以在实例化对象后为对象添加新的属性和方法.比如: zhangsan.girlfriend="小丽"; zhangsan.doing=function(){ return "i am eating"; } ---->javascript类/对象和其他面向对象语言的异同 相同点:面向对象编程的思想都是一样的,世界上所有的具体事物都可以看成对象,而这些事物从属的集合都可以看成类.我们要做的是构造我们需要的类,在实例化成我们需要的对象为我们工作. 不同点:其他面向对象编程的语言对于类/对象关心下面的事情: 1.作用域:公用,私用,受保护,静态.而javascript只有一种作用域:公用作用域. 2.特性:继承,多态.javascript不支持多态,继承方面的内容将在"javascript对象的继承"一文中介绍 ---->构建javascript类/对象的方式 首先,可以大致定义出下面几种类型: 1.工厂方式 2.构造函数方式 3.原型方式 4.混合的构造函数/原型方式 5.动态原型方法 6.混合工厂方式 具体说明: a.工厂方式: 所谓工厂方式,是指先建立对象,然后再往对象里面添加属性和方法. eg.1 var zhangsan=new object; //创建对象 zhangsan.name="张三"; //给对象添加属性 zhangsan.say=function(){ //给对象增加方法 alert("我叫张三"); } eg.2 上面的例子没有封装性,我们可以使用函数封装,实现多重利用 function people(){ var p_object=new object; p_object.name="张三"; p_object.say=function(){ alert("我叫张三"); } return p_object; //返回对象 } var zhangsan=people; var lisi=people; 上面zhangsan和lisi两个对象具有完全相同的属性和方法,都叫"张三"(name属性),都会说"我叫张三"(say()方法) eg.3 通过传递参数改进eg.2 function people(name){ var p_object=new object; p_object.name=name; p_object.say=function(){ alert("我叫"+this.name); } return p_object; //返回对象 } var zhangsan=people("张三"); var lisi=people("李四"); 总结: 工厂方式,总是先创建一个对象,再往对象中添加你需要的属性和方法.但这种做法对于封装性和多种利用性不是很有利,这导致了这种对象的构造方法不被提倡. 使用工厂方式总是为每个对象创建独立的函数版本. 这类方式使用封装然后调用新对象的时候不使用new创建对象. b.构造函数方式: 该文章在 2010/7/14 1:40:00 编辑过 |
关键字查询
相关文章
正在查询... |