JavaScript实现继承的三种方式

2018-09-26
阅读 2 分钟
4.9k
导读 JavaScript中主要有三种实现继承的方式,分别是 构造函数继承 原型继承 组合继承 其中前两种方式都有其缺陷。第三种方式组合继承则将前两种方式结合起来,取长补短,是JS继承最常用的最佳实践。本文结合代码和注释逐一阐述三种继承方式。 构造函数继承 构造函数继承的关键: 在Child构造函数中执行Parent.call(this...

JavaScript中new操作符和Object.create()的原理

2018-09-26
阅读 1 分钟
3.1k
new new func()主要过程如下: 创建一个空对象obj; 将该空对象的原型设置为构造函数的原型,即obj.__proto__ = func.prototype; 以该对象为上下文执行构造函数,即func.call(obj); 返回该对象,即return obj。 对于第3、4步还有个小细节,如果第3步func有返回值且返回值为对象,则第4步会返回func的返回值,反之则默...

为什么JavaScript没有类而使用原型?——JavaScript语言特性来历

2018-09-26
阅读 1 分钟
3.2k
问题 JS中的面向对象、原型继承等特性不同于Java等其他面向对象语言,初看起来非常怪异: 为什么JS中有new操作符、构造函数,却没有类? 为什么JS中使用原型,用原型来模拟类和继承看起来很别扭? 参考了讲述JS诞生历史的几篇文章后,我总算了解这些特性的来历,简单总结如下。 JS诞生情况 Brendan Eich(JS发明者)要在...