为什么这里的checkObject方法可以被看成一个类呢。
因为js没有真正的类。
class A{
constructor(a,b){
this.a = a;
this.b = b
}
这个是类的定义。相当于
function a(a,b){
this.a = a;
this.b = b;
}
class本质就是个语法糖而已,s用function模拟的class,用prototype模拟的继承。
思考一个关于this的问题:
答:this的字面意思,就是我:我的标题,我的时间,我的类型
那么,function被谁调用,我就是谁
我就是实例
book引用了这个实例,我也引用了同样一个实例。
问:那么我可以说这里的this就是book这个变量吗,因为他指向了这个函数调用的结果。
答:不是,内存中的实例是没有名字的。book是一个变量,它引用了这个实例而已。而,this,也是一个变量,引用了同一个。
也就是说,别人喊他喊book,他自己称呼自己是this;
如上图,没有new关键字,说明他只是在当前的作用域下面跑了一个函数。而不是创建了一个内存对象。(这里的作用域指的就是function自己的作用域的。)
因此,用了new就是book变量指向了这个新开的内存对象 成为他的引用了。