js---14公有私有成員方法
阿新 • • 發佈:2017-05-13
col fin proto prot ons logs 子類 存在 defined
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);//undefined console.log(p1.name);//111 p1.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公有私有成員方法