面向对象的基础就是定义类,js 也有类的概念,可以通过function关键来定义或者{}来定义。
下面例子主要测试js 类中的成员变量和方法的使用。
function Clazz(){
this.pubVar = 'public var';// 共有成员变量,类不可访问
var priVar = 'private var';// 内部私有成员变量,外部不可调用
Clazz.obj = 'test';// 类变量,对象不可访问
Clazz.prototype.obj2 = 'test2';
function priMethod(){// 内部私有方法,外部不可调用
alert("私有方法");
}
this.specialMethod= function(){// 特权方法,可访问所有成员
alert("pub:"+ this.pubVar+" |pri:"+priVar+" |obj:"+Clazz.obj+" |obj2:"+Clazz.prototype.obj2);
//pub:public var |pri:private var |obj:test |obj2:test2
}
Clazz.prototype.pubMethod = function(){// 公有方法,可访问所有成员
alert("pub:"+this.pubVar+" |pri:"+priVar+" |obj:"+Clazz.obj+" |obj2:"+Clazz.prototype.obj2);
//pub:public var |pri:private var |obj:test |obj2:test2
}
Clazz.staticMethod = function(){// 静态方法
alert("pub:"+this.pubVar+" |pri:"+priVar+" |obj:"+Clazz.obj+" |obj2:"+Clazz.prototype.obj2);
//pub:undefined |pri:private var |obj:test |obj2:test2
}
}
var c = new Clazz();
// 用对象去访问成员变量
//alert("pub:"+c.pubVar+" |pri:"+c.priVar+" |obj:"+c.obj+" |obj2:"+c.obj2);//pub:public var |pri:undefined |obj:undefined |obj2:test2
//document.writeln("pub:"+c.pubVar+" |pri:"+c.priVar+" |obj:"+c.obj+" |obj2:"+c.obj2+"<br/>");
// 用类名去访问成员变量
//alert("<pub:"+Clazz.pubVar+" |pri:"+Clazz.priVar+" |obj:"+Clazz.obj+" |obj2:"+Clazz.obj2);//pub:undefined |pri:undefined |obj:test |obj2:undefined
//document.writeln("pub:"+Clazz.pubVar+" |pri:"+Clazz.priVar+" |obj:"+Clazz.obj+" |obj2:"+Clazz.obj2+"<br/>");
// 用对象去访问方法
//c.priMethod();// 出错:对象不支持此属性或方法
c.specialMethod();
c.pubMethod();
Clazz.staticMethod();