总结:私有属性和方法: 函数中使用var , 函数外使用 对象
函数中:var name="zhangsan"; var show=function(){}
函数外:var p =new Person(); p.weight=180; p.eat=function(){};
公有属性和方法: 函数中使用this , 函数外使用prototype
函数中使用:this.name="张三" this.show=function(){};
函数外使用:Person.prototype.name="张三" Person.prototype.show=function(){}
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <script> // ******************1.定义类并创建类的实例对象********************************************** function Person(){//类似java的构造方法 } var p = new Person();//创建p对象 // ******************2.定义公有属性和私有属性********************************************** /* 定义私有属性: 1.在构造函数中 使用var定义 2.在构造函数外 使用 对象.属性名 定义公有的属性: 1.在构造函数中 this.属性名定义 2.在构造函数外 函数名.prototype.属性名=默认值 */ function Person(){ var name ="张三";//私有属性 this.age=100; //公有属性 } var p = new Person(); p.weight=180;//私有属性 只属于p alert(p.weight);//180 var p1= new Person(); alert(p1.weight+":"+p1.name);//两个undefined Person.prototype.height=190; //alert(p1.age+":"+ p.age)//100:100 //alert(p1.height+":"+ p.height);//190:190 // ******************3.定义公有方法和私有方法********************************************** /* 1.定义私有方法:在函数中 采用 var 方法名=function(){}定义 var showInnerPrivate=function(){} 在函数外 采用 对象名.方法名=function(){} p.eatOuterPrivate=function(){} 2.定义公有方法: 在函数中 this.方法名=function(){}; 在函数外 函数名.prototype.方法名=function(){} */ function Person(){ var show=function(){ alert("我是私有方法"); } this.display=function(){//公有方法 alert("我是display公有方法,我调用了类中的私有方法show(),结果是:"); show() } } Person.prototype.sing=function(){//公有方法 alert("我喜欢唱忘情水"); } show();//直接调用调用不了 var p = new Person(); alert(p.show());//创建对象也调用不了 p.display();//ok p.eat=function(){ alert("我要吃鸡肉"); } p.eat();//我要吃鸡肉 var p1 = new Person(); p1.eat();//报错 p1.sing();//sing(是公有的方法可以被调用) // ******************4.静态属性和静态方法********************************************* /* 注意:js中静态属性和方法只能用函数名去定义和调用,不能用对象去调用 */ function Person(){ } Person.name="张三"; Person.see=function (){ alert("我是静态方法"); } alert(Person.name);//在ie中弹出 张三 在google中弹出Person Person.see(); // ******************5.无参和有参构造函数********************************************* /* 注意:构造函数无重载,所以函数的名字不能重复 ,重复后面覆盖前面 */ // ******************6.创建对象的三种方式********************************************* /* 1.new 函数名(); var p = new Person(); 2.new Object(); var p = new Object(); 3.json格式 var json ={"a":"中国","b":"美国","c":"小日本"}; */ var obj = new Object(); obj.name="李四"; alert(typeof (obj)+obj.name);//Object 李四 var json ={"a":"中国","b":"美国","c":"小日本"}; var json1 ={1:"冲田杏梨",2:"波多野结衣",3:"苍井空"}; alert(typeof (json)+json.a+json["b"]);//object 中国 美国 推荐这种json["b"] alert(json1[1]);//冲田杏梨 json1.1报错 //拿到所有的用for in迭代 for(i in json1){ alert("我最爱的女优:"+json1[i]); } </script> </body> </html>