仅此表达我个人的理解。
prototype 原型
首先原型(prototype)是什么,可以这么理解在js里面一切都是对象,而原型就是对象的属性啦,但是对象又分为两种,一种是普通对象,还有一种是函数对象,废话少说看代码吧:
由此可见,普通对象不具有prototype属性,只有函数对象才有prototype属性,但是他们都有一个共同点都有__proto __属性,也就是说只要是对象都有 __proto __属性。注意:__proto__属性不是规范的属性,对应的规范属性是[[Prototype]]
constructor 构造函数
首先说一下构造函数的特点:
1.需要new实例化,内部使用this对象指向即将要生成的实例对象
2.首字母大写,用于区分普通函数,因为和普通函数的写法一样
从上面的代码和控制台打印出来的东西可以知道,每一个函数对象都具有prototype属性,prototype原型对象下面又有一个constructor 属性,这个constructor属性指向的是prototype属性所在的构造函数Person,现在再来看一下下面的代码: