首先声明js是脚本性语言,非面向对象语言。我这里所做的是尝试用js将面向对象中的各种特性模拟出来。
//定义类
var Test=function()
{
//定义私有变量
//这里的私有变量是指Test内部的变量
var priParam="Private";
//定义共有变量,外界及Test内部函数也可访问到
//这里的this指向Test
this.pubParam="Public";

//定义私有函数
var priFun=function()
{
//这里可以访问私有变量
alert(priParam);
//这里的var变量,其作用域为priFun内,外部无法访问
var theParam1="theParam1";
alert(theParam1);
//这里定义this指向Test,定义this. pubParam2,其实作用就是定义了Test. pubParam2
//但是却访问不到pubParam,借用面向对象的说法因为pubParam不是静态变量,必须Test实例化后才可以访问
this. pubParam2="pubParam2";
alert(pubParam2);
alert(this.pubParam2);
//这里会报错
//alert(this.pubParam);
}


//定义公有函数
this.pubFun=function()
{
//可以访问定义的私有函数
priFun();
//可以访问私有变量
alert(priParam);
//可以访问公有变量
alert(this.pubParam);
}


//定义初始化函数
this.Create=function()
{
priParam="Private Param";
this.pubParam="Public Param";
}
this.Create();
}


//定义并实例化一个类实例
//这里实际调用了Test.Create();
var test=new Test();
//Test中用this定义的变量,实例化后可以被访问,但是没办法访问priParam
alert(test.pubParam);
alert(test.priParam); //会提示为undefined
//可以调用pubFun();但无法调用priFun();
test.pubFun();
//test.priFun(); //这里会报错
看了上面的代码后,有心人就会发现在变量定义中var 和 this 的作用非常不一样,我们现在是知其然,那么其所以然是如何的呢?
先吃饭,回头说