Javascript 中面向对象的思想

时间:2021-09-30 19:48:36

1  js中一个函数就是一个类,可以将它理解为类的构造函数,负责初始化工作。

2  可以通过new的操作符获得一个类的实例。

         例如:

//定义一个hello函数
function hello(){
      alert("hello");
}
//通过new一个函数获得一个对象
var obj=new hello();
alert(typeof(obj));

3 对象的属性和方法

         其他语言中,对象一旦生成,就不可更改,要为一个对象添加、修改成员必须要在对应的类中修改,并重新实例化,程序也必须重新编译。JavaScript提供了灵活的机制来修改对象的行为,可以动态添加、修改、删除属性和方法。例如:先用类Object来创建一个空对象user:

var user=new Object();

(1)      获取属性或方法

        a)        对象名.属性(方法)名

        b)        对象名["属性(方法)名"]

(2)      添加属性

       a)        添加属性:

user.name="jack";

user.age=21;

user.sex="male";

       b)        添加方法

user.alert=function(){

alert("myname is:"+this.name);

}

(3)      修改属性和方法

修改一个属性和方法的过程就是用新的属性替换旧的属性,例如:

user.name="tom";

user.alert=function(){

     alert("hello,"+this.name);

}

(4)      删除属性和方法

删除一个属性和方法的过程也很简单,就是将其置为undefined:

user.name=undefined;

user.alert=undefined;

这样就删除了name属性和alert方法。

4 无类型对象

         传统的面向对象语言中,每个对象都会对应到一个类。上一节讲this指针时提到,JavaScript中的对象其实就是属性(方法)的一个集合,并没有严格意义上类的概念。所以它提供了一种简单的方式来创建对象,即大括号({})语法:

{

     property1:statement,

     property2:statement2,

     …,

     propertyN:statmentN

}

通过大括号括住多个属性或方法及其定义(这些属性或方法用逗号隔开),来实现对象的定义,这段代码就直接定义个了具有n个属性或方法的对象,其中属性名和其定义之间用冒号(:)隔开。

 

5 prototype原型对象

prototype 对象是实现面向对象的一个重要机制。每个函数(function)其实也是一个对象,它们对应的类是“Function”,但它们身份特殊,每个函数对象都具有一个子对象prototype。即prototype表示了该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过 new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。