美文网首页
继承的发展

继承的发展

作者: 灯火葳蕤234 | 来源:发表于2019-10-05 20:24 被阅读0次
1.传统形式 ——原型链

缺点:过多地继承了没用的属性
举例:

Grand.prototype.lastName = 'Li';
function Grand() {
}
var grand = new Grand();
Father.prototype = grand;
function Father() {
  this.name = 'li';
}
var father = new Father();
Son.prototype = father;
function Son(){
}
var son = new Son();

比如以上的情况,我们只是想在 son 实例中去继承原型链顶端的 lastName 属性,但是我们把原型链上所有的属性都继承过来了。所以这个继承的方法其实是不太好的。

2.借用构造函数

缺点:不能继承借用构造函数的原型
每次构造函数都要多走一个函数
举例:

function Person(name,age,sex){
  this.name = name;
  this.age = age;
  this.sex = sex;
}
function Student(name,age,sex,grade) {
  Person.call(this,name,age,sex);
  this.grade = grade;
}
var student = new Student();
3.公有原型

缺点:不能随便改动自己的原型
举例:

Father.prototype.lastName = 'Li';
function Father() {
}
function Son() {
}
Son.prototype = Father.prototype;
var son = new Son(); //son.lastName = 'Li';
var father = new Father();//father.lastName = 'Li';

我们可以把继承的逻辑封装成一个功能:

Father.prototype.lastName = 'Li';
function Father() {
}
function Son() {
}
function inherit(Target,Origin){
  Target.prototype = Origin.prototype;
}
inherit(Son, Father);

但是这个方法依旧有不足的地方,比如我们想要给Son 的原型上多加一个属性来方便它构造出对象来使用,此时我们只有在 Son.prototype 中去增加属性,但是,这样会影响 Father.prototype,原因是Son.prototypeFather.prototype指向的其实是同一片内存空间。在这种情况下,我们想给Son 加上个性化的属性是不可行的。

4.圣杯模式

这个方法解决了公有原型方法的问题,是比较理想的继承的方法。

funnction inherit(Target, Origin){
  function F(){};
  F.prototype = Origin.prototype;
  Target.prototype = new F();
  Target.prototype.constuctor = Target;//归位Son的constuctor
  Target.prototype.uber = Origin.prootype;//找到真正继承自谁
}
Father.prototype.lastName = 'Li';
function Father() {
}
function Son() {
}
inherit(Son, Father);
var son = new Son();
var father = new Father();

相关文章

  • 继承的发展

    1.传统形式 ——原型链 缺点:过多地继承了没用的属性举例: 比如以上的情况,我们只是想在 son 实例中去继承原...

  • 继承发展

    子曰:周鉴于二代,郁郁乎文哉!吾从周。 孔子说:“周朝的礼仪制度是在夏,商两代的礼仪制度基础上建立起来的,丰富而完...

  • 草书的特质和其创新、发展(三)

    三、 创新、发展的路径 1、继承。创新、发展的基础和前提是继承,只有继承才能创新和发展,但关键是继承什么?是...

  • 继承与发展

    随卦讲了树立人生楷模的事情,紧接的蛊卦讲了如何继承发展的问题,所以易经真的是连贯一体的。山下有风,给人一种很振奋的...

  • 诗的民族发展

    诗的民族发展· 诗的传统继承与发展是诗在历史演变过程中,所持有的基本特征.在传统继承与发展方面,传统的历史继承是第...

  • 《向雄读<论语>之:儒学的继承与发展(1)》

    继承,不是照搬;发展,不是变味。 《庄子》中有个“儒士儒服”故事,批评的正是把“照搬”当继承的做法: ...

  • 晨语问安2022年5月16日

    『晨语问安5.16』进步是继承中的进步,创新是继承中的创新。继承是前行的基础,发展的根基,创新创造的源泉。从历史发...

  • JS(十五)继承模式,命名空间,对象枚举(上)

    写在最前面 继承的发展史 传统形式 --> 原型链过多的继承了没有用的属性 借用构造函数不能继承借用构造函数的原型...

  • 继承,命名空间

    继承发展史 1.传统形式-->原型链过多的继承了没用的属性2.借用构造函数不能继承借用构造函数的原型每次构造函数都...

  • javascript基础学习笔记2

    继承发展史 1.传统形式—>原型链过多的继承了没用的属性 2.借用构造函数不能继承借用构造函数的原型每次构造函数都...

网友评论

      本文标题:继承的发展

      本文链接:https://www.haomeiwen.com/subject/pvynyctx.html