js构造函数的继承

js构造函数的继承

1call()

(1) call()可以调用函数
(2) call()可以修改this的指向,使用call()的时候 参数一是修改后的this指向,参数2,参数3..使用逗号隔开连接

 function fn(x, y) {
     console.log(this);
     console.log(x + y);
}
  var xhc = {
    name: 'andy'
  };
  fn.call(xhc, 1, 2);//调用了函数此时的this指向了对象xhc,

2子构造函数继承父构造函数中的属性

  1. 先定义一个父构造函数.
  2. 再定义一个子构造函数
  3. 子构造函数继承父构造函数的属性(使用call方法)
 // 1. 父构造函数
 function Father(uname, age) {
   // this 指向父构造函数的对象实例
   this.uname = uname;
   this.age = age;
 }
  // 2 .子构造函数 
function Son(uname, age, score) {
  // this 指向子构造函数的对象实例
  // 3.使用call方式实现子继承父的属性
  Father.call(this, uname, age);
  this.score = score;
}
var son = new Son('kunkun', 18, 100);
console.log(son);

3借用原型对象继承方法 (组合继承)

  1. 先定义一个父构造函数
  2. 再定义一个子构造函数
  3. 子构造函数继承父构造函数的属性(使用call方法)
// 1. 父构造函数
function Father(uname, age) {
  // this 指向父构造函数的对象实例
  this.uname = uname;
  this.age = age;
}
Father.prototype.money = function() {
  console.log(1111111);
 };
 // 2 .子构造函数 
  function Son(uname, age, score) {
      // this 指向子构造函数的对象实例
      Father.call(this, uname, age);
      this.score = score;
  }
// Son.prototype = Father.prototype;  这样直接赋值会有问题,如果修改了子原型对象,父原型对象也会跟着一起变化
  Son.prototype = new Father();
  // 如果利用对象的形式修改了原型对象,别忘了利用constructor 指回原来的构造函数
  Son.prototype.constructor = Son;
  // 这个是子构造函数专门的方法
  Son.prototype.exam = function() {
    console.log(2222222);

  }
  var son = new Son('kunkun', 18, 100);
  console.log(son);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 做这个的初心是希望能巩固自己的基础知识,也通过这种方式检查自己知识的缺失点。目前还不完善,后续会根据时间不断更正和...
    lp_lp阅读 36,735评论 7 147
  • ==============part1========== 1.面向过程与面向对象 1.1面向过程 面向过程就是分...
    鱼来鱼往0709阅读 1,832评论 0 0
  • 1.编程思想 2.对象与类 3.面向对象版tab 栏切换 4.构造函数和原型 5.继承 6.ES5新增方法 7.函...
    Scincyc阅读 3,576评论 0 0
  • 一、面向过程与面向对象 1.1 面向过程(POP) 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一...
    AizawaSayo阅读 3,798评论 1 5
  • 第一章 错误处理: 错误: 程序运行过程中,导致程序无法正常执行的现象(即bug) 现象: 程序一旦出错,默认会报...
    fastwe阅读 4,892评论 0 1

友情链接更多精彩内容