在面向对象语言中如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面向对象的重要角色,只有先理解了它才能对后面的继承进行理解。