JS中的prototype与面向对象的实例讲解

复制代码 代码如下:

  <script language="javascript" type="text/javascript">

  //(1)把一个方法变成一个对象,为对象创建方法和属性

  var Name = function () {

  //通过prototype给一个对象创建方法

  Name.prototype.Add = function (num, title) {

  }

  //也可以直接用this加方法名为对象创建方法和上面的等价

  this.Way = function (str) {

  }

  //为对象添加属性值

  Name.prototype.xing = "123";

  //定义静态属性和方法

  Name.shi = "static";

  Name.Addd = function (num, title) {

  }

  //静态定义的局部属性和方法只能在静态的类型里面用

  alert(Name.shi);

  Name.Addd(1, 2);

  }

  //方法也可以这样声明

  function Name1() {

  Name1.prototype.add = function () { }

  this.way = function () { }

  Name1.prototype.shu = "other";

  }

  //静态定义的全局属性和方法通用

  Name.sha = "static";

  Name.Addd2 = function () {

  }

  alert(Name.sha); //调用静态属性

  Name.Addd2(); //调用静态方法

  var name = new Name();

  name.Add(); //对象调用方法

  name.Way();

  alert(name.xing); //对象调用属性

  /*静态的全局变量,在方法外可以调用;静态的局部变量和方法仅限于方法内使用;实例对象不能调用静态的方法 */

  /*实例对象不能使用prototype; */

  //(2)Javascript面向对象 继承

  //父类

  function Class() {

  this.name = "name";

  this.method = function () {

  alert("method");

  }

  }

  //子类

  function Class1() {

  this.name1 = "name1";

  this.method1 = function () {

  alert("method1");

  }

  }

  //子类继承父类

  Class1.prototype = new Class();

  var obj = new Class1();

  alert(obj.name);

  alert(obj.name1);

  obj.method();

  obj.method1();

  /******  子类继承父类的语法,子类.prototype=new 父类();  *****/

  //(3)子类重写父类

  //子类

  function Class2() {

  this.name2 = "name2";

  this.method2 = function () {

  alert("method2");

  }

  }

  Class2.prototype = new Class(); //继承

  Class2.prototype.name = "updateName"; //重写父类的属性

  Class2.prototype.method = function () {//重写父类的方法

  alert("UpdateMethod");

  }

  var obj2 = new Class2();

  alert(obj2.name); //显示updateName

  obj2.method(); //显示UpdateMethod

  alert(obj2.name2);

  obj2.method2();

  //(4){}里面的为对象

  var arr = new Array();

  arr.push({ "name": "1", "age": 12, funA: function () { } });

  arr.push({ "name": "2", "age": 13 });

  arr.push({ "name": "3", "age": 14 });

  for (var i = 0; i < arr.length; i++) {

  alert(arr[i].name);

  alert(arr[i].age);

  alert(arr[i].funA());

  }

  /****一个对象也可以这么定义***/

  var newObject = {

  "name": "Jim",

  "sex": "Man",

  Way: function () { }

  };

  </script>