js面向对象编程,模拟类class中的私有变量和私有函数


面向对象编程中,类(class)是对象(object)的模板,定义了同一组对象或实例共有的属性和方法。 javascripts不支持"类",但是可以用变通的方法模拟
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script>
var _1500kmCom={
    construct:function(){
        var temp={};
        
        //私有成员变量
        var a='hello';
        
        //公有成员变量
        temp.b='world';
        
        //公有函数
        temp.test=function(){
                return a; 
        };
        
        //公有函数
        temp.func=function(){
                return private_fun(); 
        };
        
        //私有函数
        function private_fun(){
                return 'private_fun';
        }
        
        return temp;
    }
};
var km=_1500kmCom.construct();
</script>

<button onclick="alert(km.test())">直接调用公有函数,该函数调用了私有变量,允许</button><br />
<button onclick="alert(km.func())">直接调用公有函数,该函数调用了私有函数,允许</button><br />
<button onclick="alert(km.b)">直接调用公有变量,允许</button>

<hr />
<button onclick="alert(km.private_fun())">直接调用私有函数,调用不了</button><br />
<button onclick="alert(km.a)">直接调用私有变量,undefined</button>


程序运行结果如下,这里有演示例子