JS技术

javascript 类继承

字号+ 作者: 来源:    2014-11-17 20:00 我要评论( )

javascript 类继承,阅读javascript 类继承,1.第一种方式,冒充对象的方式.(利用js里的每一个方法名都是一个Function对象) Java代码 function Parent(username){ this.username = username; this.say = function(){ alert(this.username); } } function Child(u

1.第一种方式,冒充对象的方式.(利用js里的每一个方法名都是一个Function对象) Java代码
  function Parent(username){
  this.username = username;
  this.say = function(){
  alert(this.username);
  }
  }
  function Child(username,password){
  this.temp = Parent;//temp指向Parent所指向的地方 。 利用js里的每一个方法名都是一个Function对象,指向一个方法。
  this.temp(username);//初始化方法里的内容
  delete this.temp;//temp没有用了。可以直接删除掉.this不可以丢了
  //Parent(username);//这样写表面看起来是正确的,其实是错误的。因为只有new出来的对象才有this,所以调用Parent里的this就没有值了 
  this.password = password;
  this.hello = function(){
  alert(this.password);
  }
  }
  var parent = new Parent("zhangsan");
  parent.say();//zhangsan
  var child = new Child("lisi","123456");
  child.say();//lisi
  child.hello();//123456
  //第一种方式,冒充对象的方式.(利用js里的每一个方法名都是一个Function对象)
  function Parent(username){
  this.username = username;
  this.say = function(){
  alert(this.username);
  }
  }
  function Child(username,password){
  this.temp = Parent;//temp指向Parent所指向的地方 。 利用js里的每一个方法名都是一个Function对象,指向一个方法。
  this.temp(username);//初始化方法里的内容
  delete this.temp;//temp没有用了。可以直接删除掉.this不可以丢了
  //Parent(username);//这样写表面看起来是正确的,其实是错误的。因为只有new出来的对象才有this,所以调用Parent里的this就没有值了
  
  this.password = password;
  this.hello = function(){
  alert(this.password);
  }
  }
  var parent = new Parent("zhangsan");
  parent.say();//zhangsan
  var child = new Child("lisi","123456");
  child.say();//lisi
  child.hello();//123456
  2.第二种方式:call()函数方式 call()函数是Function对象的一个函数
  具体用法如下 Java代码
  //call()函数是Function对象的一个函数
  //具体用法如
  function test(str){
  alert(this.username + "," + str);
  }
  var o = new Object();
  o.username = "zhangsan";
  test.call(o,"123456");//zhangsan,123456 .因为每个Function 对象都有一个call()方法,而函数名就是一个Function对象.call()函数的第一个参数是test函数里的this.
  //call()函数是Function对象的一个函数
  //具体用法如
  function test(str){
  alert(this.username + "," + str);
  }
  var o = new Object();
  o.username = "zhangsan";
  test.call(o,"123456");//zhangsan,123456 .因为每个Function 对象都有一个call()方法,而函数名就是一个Function对象.call()函数的第一个参数是test函数里的this.
  Java代码
  function Parent(username){
  this.username = username;
  this.say = function(){
  alert(this.username);
  }
  }
  function Child(username,password){
  Parent.call(this,username);
  this.password = password;
  this.hello = function(){
  alert(this.password);
  }
  }
  var parent = new Parent("zhangsan");
  parent.say();//zhangsan
  var child = new Child("lisi","123456");
  child.say();//lisi
  child.hello();//123456
  function Parent(username){
  this.username = username;
  this.say = function(){
  alert(this.username);
  }
  }
  function Child(username,password){
  Parent.call(this,username);
  this.password = password;
  this.hello = function(){
  alert(this.password);
  }
  }
  var parent = new Parent("zhangsan");
  parent.say();//zhangsan
  var child = new Child("lisi","123456");
  child.say();//lisi
  child.hello();//123456
  3.第三种实现方式:apply()函数方式
  apply()和call()是一样的,只不过参数传递不同而已,apply的参数为数组 Java代码
  //第三种实现方式:apply()函数方式,apply()和call()是一样的,只不过参数传递不同而已,apply的参数为数组
  //所以继承可以这样实现
  function Parent(username){
  this.username = username;
  this.say = function(){
  alert(this.username);
  }
  }
  function Child(username,password){
  Parent.apply(this,new Array(username));
  this.password = password;
  this.hello = function(){
  alert(this.password);
  }
  }
  var parent = new Parent("zhangsan");
  parent.say();//zhangsan
  var child = new Child("lisi","123456");
  child.say();//lisi
  child.hello();//123456

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 老生常谈,JavaScript闭包中的this对象

    老生常谈,JavaScript闭包中的this对象

    2016-02-26 10:21

  • 学习JavaScript之this,call,apply

    学习JavaScript之this,call,apply

    2016-01-28 20:45

  • JavaScript复习笔记--字符串

    JavaScript复习笔记--字符串

    2016-01-27 17:16

  • WEB前端教程-JavaScript里的类和继承

    WEB前端教程-JavaScript里的类和继承

    2016-01-21 15:28

网友点评
>