首页 > 代码库 > js面向对象的系列

js面向对象的系列

在面向对象语言中如java,C#如何定义一个对象,通常是定义一个类,然后在类中定义属性,然后通过new 关键字来实例化这个类,我们知道面向对象有三个特点,继承、多态和封装。那么问题来了,在javaScript中如何定义一个类?在javaScript中如何定义类的属性?如何继承?带着这些问题开始我们的js面向对象之旅吧。

在js中如何定义类?

js中是没有类的概念的,但是我们通常会用一个函数定义成一个类。funtion class1(){

//类的成员定义

}

这里class1既是一个函数也是一个类。我们可以通过var cl1=new class1();来实例化这个类。

再来试着为类添加一些属性。

添加类的公有成员:

function class1{

  this.publicmember="我是公共的属性";

  this.publicmembermethond=function(msg){alert("我是公共的方法"+msg);};

}

试着调用一下:

class1 cl=new class1();

cl.publicmembermethond(cl.publicmember);

另外一种添加公共方法和属性的方法是通过prototype原型实例。看代码如下

class1.prototype.publicmember="我是公共的属性";

class1.prototype.publicmembermethond=function(msg){alert("我是公共的方法"+msg);};

调用方法同上。大家可以试着运行一下看看效果。后面会单独一章来讲prototype。

如何定义私有成员?代码如下:

function class1{

  var privatemember="我是私有的你们不能访问";

  var privatemembermethond=function(msg){alert("我是私有的方法,我可以访问私有的变量privatemember:"+privatemember);};

  this.publicmember="我是公共的属性";

  this.publicmembermethond=function(msg){alert("我是公共的方法"+msg);};

}

class1 cl=new class1();

cl.privatemembermethond(cl.privatemember);

这段调用会报错,因为私有的成员只能在类的内部访问。

如何定义静态变量:

class1.staticmember="我是个静态变量";

class1.staticmembermethon=funtion (){alert("直接访问静态变量:"+class1.staticmember);};

ok,今天到这里,一个讲了如何定义类,如何定义类的成员变量两个问题。下一节讲一讲原型实例prototype,这是js面向对象的重要角色,只有先理解了它才能对后面的继承进行理解。

 

js面向对象的系列