js 类对象

总结:私有属性和方法:  函数中使用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>

 

posted @ 2016-05-21 20:44  黑土白云  阅读(190)  评论(0)    收藏  举报