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);//true var 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