您当前的位置: 首页 > 

暂无认证

  • 2浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

2、原型实例继承

发布时间:2021-04-16 16:55:29 ,浏览量:2

目录
  • 1、父函数
  • 2、父函数原型上的方法
  • 3、子函数
  • 4、实现继承
  • 5、参考的原文链接
1、父函数
function parentClass() { this.parentVal = '父类的基本类型值。'; this.parentFun = function (data) { console.log(this.parentVal); // 父类的基本类型值。 console.log(data); // 调用父类方法出入的值。 return '父类方法返回的值。'; }; }; 
2、父函数原型上的方法
parentClass.prototype.parentProtyFun = function (data) { console.log(this.parentVal); // 父类的基本类型值。 console.log(data); // 调用原型方法传入的值。 return '原型方法返回的值。'; }; 
3、子函数
function student(name) { this.name = name; console.log(name); // new 时传入的值。 parentClass.apply(this, arguments); }; 
4、实现继承
// 这是比较常用的一种实现继承的方式。 // 1、将 student 的 prototype 对象指向 parentClass 的一个实例。 // 此操作完全删除了 student.prototype 对象原本的内容, // 然后赋予给它一个新的值。 student.prototype = new parentClass(); // 2、任何一个构造函数都有一个 prototype 对象, // 这个 prototype 对象都有一个 constructor 属性指向自身的构造函数。 // 2.1、因为第一行对 prototype 对象进行了重新赋值, // 所以 prototype 对象的 constructor 属性也发生了改变, // 变成指向 parentClass , // 所以必须手动将 student.prototype.constructor 指回 student 。 // 2.2、如果没有(student.prototype.construct = student) 这行代码, // 则 student.prototype.constructor == parentClass 和 // example.constructor == parentClass 的结果返回 false 。 // 2.3、这里比较好理解,因为 example 是 student 的实例化对象, // 它的 constructor 属性默认继承自 parentClass.prototype , // 而 parentClass.prototype 的 constructor 属性继承自 parentClass.prototype , // 最后找到 parentClass.prototype.constructor 指向 parentClass 。 // 显然如果没有这句话,将会导致继承链的错乱。 // 注意:在编程时,如果对 prototype 对象进行重新赋值后, // func.prototype = { sname: '李白' }; // 记得手动奖 prototype 的 constructor 属性智慧原来的构造函数。 // func.prototype.constructor = func; student.prototype.construct = student; let example = new student('new 时传入的值。'); console.log(example); // {parentVal: "父类的基本类型值。", name: "new 时传入的值。", parentFun: ƒ} console.log(example.parentVal); // 父类的基本类型值。 console.log(example.parentFun('调用父类方法出入的值。')); // 父类方法返回的值。 console.log(example.parentProtyFun('调用原型方法传入的值。')); // 原型方法返回的值。 
5、参考的原文链接

知乎-原文

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.4717s