首先,我们要清楚,由于种种原因,同一个东西,往往有多种不同的 叫法,如:
构造函数又叫构造器,实例化的过程又叫构造,更是new的过程。
var oDate=new Date()
oDate 是一个对象,也是一个实例,可以用它来执行一些方法,如:
oDate.getFullYear()
(这里一般习惯用脚本语言做开发的,喜欢称它为 对象,其他的喜欢称它为 实例)
而我们不能用Date这个类去执行一些 方法;
换一个更生动的说法:
我们 根据一张图纸造一个产品,如,根据房子的图纸造房子,根据车的图纸来造车等等,,
这里
图纸 相当于 类
建造 这个动词 相当于 构造函数(构造器)和实例化(构造)
最终产品 相当于 对象(实例)
所以,从这个角度来说,单纯一张图纸(类),是 无法使用这个产品的一些功能或者方法的,需要我们把图纸 实例化 为一个产品(实例或对象)才行;
接下来,我们来看一下 ,建造的过程,或者构造器(构造函数):
<script>
class Cla{
constructor(){//这里就是构造器(构造函数)---相当于建造的机器人
//第1步(隐含):let this=new Object();
//第2步(看得见):加东西
this.a=12;
this.b=5;
//第3步(隐含):return this;
}
show(){
alert(this.a+this.b);
}
}
let obj=new Cla();
obj.show();
</script>
constructor内部的东西就是整个构造器(构造函数)的东西。这里我们
形象的理解为 构造器(构造函数)为工厂机器人,让它造整个产品,,,
所以一些属性的添加,方法的调用,继承,都要在这里进行,,
同时,系统也会隐含的为我们做两件事:
1. let this=new Object(); ---创建一个空白对象
2. return this; ---返回这个经过机器人添加东西的对象
### 同时注意这也就是,我们为什么在面向对象里,频繁使用this和找this指向问题的原因,,,
### 因为系统创建和返回对象,都是通过this来执行的
### 另外,面向对象的程序编写的过程中,遇到的大多数错误,一般都是this指向问题的错误
网友评论