標籤:-- function return style 對象 log 屬性 成員 mod
var ns1 = {}; //命名空間ns1.ns11 = {};//子命名空間ns1.module1 = {name:"a",m:function(){}};console.log(ns1.module1.name);ns1.ns11.module = {name:"a",m:function(){}};//成員封裝//1.靜態成員function Person(name,age){ //Person既可以看成是函數,也可以看成是類,也可以看成是對象 this.name = name;}Person.u = true;//添加靜態成員console.log(Person.u);//truevar p1 = new Person();console.log(p1.u);//undefined,變數不能訪問靜態成員,console.log(Person.__proto__);//Person本身看成是一個對象,他是Function構造出來的,//2.公有方法function Person(name){ var age = 100;//私人成員 function pm(){//私人方法 console.log("private"); } this.name = name;//公有成員 this.t = function(){//公有方法 console.log("pnblick"); }}var p1 = new Person(111);console.log(p1.age);//undefinedconsole.log(p1.name);//111p1.pm();//不能訪問p1.t();//pnblick//公有方法調用私人方法function Person (pname) { var age = 100;//私人屬性 function pm(){//私人函數,私人函數訪問公有屬性, console.log(this.name); } this.name = pname;//公有成員 this.test=function(){//公有方法 console.log("public method"); //pm(); pm()前面不寫表示window.pm(),所以pm()函數裡面的this是window, pm.call(this); }; }var p2 = new Person();p2.test(); function Person(pname){ function pm(){ console.log(self.name);//閉包:子類訪問父類的成員self,不是this,this就是window } var self = {//對象 name:pname, test:function(){ pm();//函數執行沒有return,不存在對象,就是函數調用, } }; return self; }var p2 = new Person(“ss”);p2.test();//ss
js---14公有私人成員方法