您的位置:首页 > Web前端 > JavaScript

javascript面向对象

2014-04-04 02:38 253 查看

javascript面向对象

一、什么是面向对象

  什么是对象:简单通俗的可以把它比喻为一个收音机,我们只需要用它提供的按钮(功能),而不需要知道它的实现原理。这就是对象。

  面向对象是一种思想,也可以从生活中去发现。我们只需要关注它提供的功能,而不关注内部细节。它也是一种通用的思想。

二、面向对象(oop)的特点

封装:只提供外部使用功能,不需要考虑内部实现。

继承:子类可以继承父类的所有属性,方法。

多态:子类可以继承多个父类的属性和方法,并且可以有自己的特殊属性和方法。

  最关键:抽象,抓住核心问题。

  面向对象是解决一类问题,在考虑需求时,应该抓住核心问题,如:员工管理,只需要考虑员工的姓名,职位,薪资等,不用考虑与他无关的问题。

三、对象的组成

  属性(相当于变量)this.name='abc';

  方法(相当于函数)this.show=function(){alert( this.name )};

  方法内this的指向问题:this的函数属于谁,this就是谁

四、工厂方式创建对象

function animal(name, age){
//1.原料
var obj=new Object();

//2. 加工
obj.name=name;
obj.age=age;

obj.showName=function(){
alert(this.name);
};
obj.showAge=function(){
alert(this.age);
};

//3.出厂
return obj;
}


  缺点:var a1=animal('大象', 5); var a2=animal('小猩猩', 1);   (a1.showName==a2.showName) false

  1.每个对象都有自己的属性和方法=》资源浪费  2.没有new

五、原型(prototype)

  原型相当于css中的class,给一类对象添加方法。

  比如:给系统的String对象添加方法

String.prototype.trim=function(){
return this.replace(/^\s+|\s+$/g, '');
};

var str='   fsdfsf  fsf fsd     fsdfsf      ';
str.trim();


  只要给String对象的原型添加了trim方法,str1,str2....strn都可以调用trim方法。而且重要的一点(str1.trim==str2.trim) true,方法都是共用,不浪费资源。

  这样我们就可以把工厂方式改变一下:

function Animal(name, age){
this.name=name;
this.age=age;
}

Animal.prototype.showName=function(){
alert(this.name);
};

Animal.prototype.showAge=function(){
alert(this.age);
};

var a1=new Animal('大象', 5);
var a2=new Animal('金刚', 100);

alert(a1.showName==a2.showName);    true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: