JS中,构造函数的与普通方法一样,不存在特殊语法,唯一的区别在于调使用方法不同。用new操作符调使用,那么它就是构造函数,反正则不是,如下面一段代码。
调使用同一个构造函数的对象,是新的独立的个体,如下图:
每创立一个函数都有一个prototype属性,该属性是一个指针,该指针指向了一个对象。对于我们创立的构造函数,该对象中包含能由所有实例共享的属性和方法。所有原型对象会自动包含一个constructor属性,该属性也是一个指针,指向prototype所在的函数。当我们需要读取对象的某个属性时,都会执行一次搜索。首先在该对象中查找该属性,若找到,返回该属性值;否则,到[[prototype]]指向的原型对象中继续查找。
总结:1.通过new操作符来区分构造函数与普通函数。
2.读取对象的某个属性时,js引擎首先在该对象中查找该属性,若找到,返回该属性值;否则,到[[prototype]]指向的原型对象中继续查找。