* 在MDN中关于继承与原型链的解释中,有这样一句话 : 对于使用过基于类的语言 (如 Java 或 C++) 的开发者们来说,JavaScript 实在是有些令人困惑 —— JavaScript 是动态的,本身不提供一个class的实现。(我觉得说的非常对,我就很难理解JavaScript中继承以及它为什么需要修改this的指向,因此我希望通过这样一篇文章来弄懂我的困惑。再次之外,能够给别人一些启发,我将十分高兴)
一.详解关于ES6中的对象以及对象的构造
对象:JavaScript是基于对象的脚本语言,就是说JavaScript中也有对象的概念。在任何语言中对象的含义都是相同的:为一系列特征(名词 - 属性)和动作(动词 - 函数)的集合。这几乎没什么解释。但是JavaScript是解释型语言,他和Java这种面向对象的语言实现对象的方式是不同的。
JavaScript中对象构造方法
1.利用{}字面量创建对象 -只是对象,不能充当原型(下面解释)
const car = {
color: 'red';
run:function(){
return '这车可以跑啊!';
}
}
2. 构造一个对象,使用new 关键字实例化一个对象
使用new关键字构造一个对象,首先要使用function或者class关键字创造一个对象模板,这在JavaScript中被称作原型。举个例子,我要创建车对象,如果我只是随便造一个车的话,那么我可以是方法一创建对象,但如果我想要制造一堆车怎么办呢?我必须先画一个图纸或者先建立一个工厂。那么 function Car(){}
或者 class Car{}
就是这样的过程。他们两的不同,我们在后面讨论。因为说道这里,我们必须要首先讨论原型链,见下图。