继承是OOP中大家最喜欢谈论的内容之一,一般来说,继承都两种方式:接口继承和实现继承而JavaScript中没有接口继承需要的方法,因此只能依靠实现继承。在讲继承的实现之前,我们首先来回顾一下什么是继承?继承的作用是什么? 它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩 ...
分类:
Web程序 时间:
2019-12-22 16:46:05
阅读次数:
89
一.原型链继承 关键步骤: 让子类的原型对象成为父类的实例 矫正子类构造器属性 让子类的原型对象成为父类的实例 矫正子类构造器属性 二.借用构造函数继承 借用构造函数继承是伪继承:原型链上找不到父类的实例(son.__proto__..... != father.prototype) 三.组合继承: ...
分类:
Web程序 时间:
2019-12-08 12:47:34
阅读次数:
99
所谓寄生组合式继承,即通过构造函数来继承属性,通过原型式继承来继承方法,代码如下: function inheritPrototype(sub,sup){ var prototype = Object.create(sup.prototype); prototype.constructor = su ...
分类:
编程语言 时间:
2019-11-06 14:57:13
阅读次数:
107
借用构造函数继承是在子类型构造函数的内部调用超类型狗在函数,通过使用apply()和call()方法 function girlFriend(){ this.girls = ['chen','wang','zhu']; } function Person(){ girlFriend.call(thi ...
分类:
编程语言 时间:
2019-11-06 12:58:54
阅读次数:
71
javascript对象的几种创建方式 1,工厂模式 2,构造函数模式 3,原型模式 4,混合构造函数和原型模式 5,动态原型模式 6,寄生构造函数模式 7,稳妥构造函数模式 下载资源:www.yinxiangit.com javascript继承的6种方法 1,原型链继承 2,借用构造函数继承 3 ...
分类:
其他好文 时间:
2019-09-13 15:19:52
阅读次数:
115
一、原型继承 缺点:1、不能给父级构造函数传参 2、父级构造函数中引用类型的数据,会被自己构造函数实例共享 ps:这是下面实例中的2只猫,是不是萌萌哒! 这是小7 这是8哥 二、借用构造函数继承 缺点:无法继承原型中的方法 三、组合继承 完美的解决了前面2种方式造成的缺陷,但是我们会发现构造函数的属 ...
分类:
其他好文 时间:
2019-07-30 15:34:16
阅读次数:
71
一、原型链继承 原理:修改子类型的原型,使其指向父类型的实例; 缺点: 1,不能以字面量方式在子类型的原型上添加新方法;这回重新改写子类型的原型; 2 创建子类型的实例时无法向父类型的构造函数传参。 3,不同子类型的实例对父类型中引用类型的属性进行操作时,会产生篡改 产生这种问题的原因是:父类型实例 ...
分类:
编程语言 时间:
2019-04-10 21:48:34
阅读次数:
184
一、原型链的缺点 1.1 单纯的原型链继承最大的一个缺点,在于对原型中引用类型值的误修改。 先看一个例子: 以上例子,我们通过重写 Student.prototype 的值为 Person 类的一个实例,实现了 Student 类对 Person 类的继承。所以 ,stu1 能访问到父类 Perso ...
分类:
Web程序 时间:
2018-07-30 21:38:17
阅读次数:
196
一、回顾借用构造函数继承的缺点 先看我们之前在借用构造函数继承中最后用到的代码: 在这段代码中,我们通过借用构造函数继承,保证了 stu1 和 stu2 都有各自的父类属性副本,从而使得各自 emotion 互不影响。但同时带来的问题是,stu1 和 stu2 都拷贝了 Person 类中的所有属性 ...
分类:
Web程序 时间:
2018-07-30 21:33:25
阅读次数:
138
1. 单纯性的原型链继承的缺陷: a. 原型上任何类型的属性值,都不会被实例所重写,但是引用类型的属性值会因为实例的影响而被修改。 eg: stu1.emotion.push("愁"); //emotion属性,stu1实例本身上是没有的,是继承了父类的属性,这时对emotion属性的修改,将会对父 ...
分类:
其他好文 时间:
2018-07-15 11:10:41
阅读次数:
132