本文说明了如何在JavaScript中实现基于class的面向对象语言中的私有变量和方法• 私有变量 使用'var' 关键字定义在对象构造函数的内部,只能被私有方法和特权方法访问。
私有函数 使用内嵌(inline)的方式定义在对象构造函数的内部(也可以通过这样的方式定义:var functionName=function(){...}),只能被特权方法访问。
特权方法(Privileged method) 使用下面的方式定义: this.methodName=function(){...} 可以被对象外的代码访问。
公开属性 使用this.variableName 方式定义,可以在对象外读取和修改。
公开方法 使用Classname.prototype.methodName = function(){...},可以在对象外访问。
原型属性(Prototype Properties)定义方式是: Classname.prototype.propertyName = someValue
静态属性 定义方式是:Classname.propertyName = someValue
//普通的类
function class1()
{
//private fields
var m_first=1;
var m_second=2;
m_third=3;//全局变量
//private method
var method1=function()
{
alert(m_first);
}
var method2=function()
{
alert(m_second);
}
//public
this.m_five=5;//在公有方法和原型方法中this表示实例对象
this.method5=function()//在公有方法和原型方法中this表示实例对象
{
alert(this.m_five);
}
//构造函数用于调用私有函数
//class1//名字可有可无
{
method1();
method2();
}
}
class1.m_fourth=4;//静态变量
class1.method3=function()//静态成员函数
{
alert(this.toString);//在静态成员中this表示类本身这里是class1
alert(this.m_fourth);
}
class1.prototype.method4=function()//public公有方法
{
alert(this.toString);//在公有方法和原型方法中this表示实例对象
}