prototype的初步理解
1.每一个函数数据类型(普通函数/类),天生自带属性prototype, 属性值是一个对象数据类型
2.每一个对象数据类型,天生自带属性__proto__, 属性值是当前实例所属的类的prototype
3.prototype的属性值是一个对象数据类型,这个对象里面有个浏览器自带的construnctor的属性,属性值是这个函数本身
同时因为2,所以有属性__proto__
换言之,浏览器产生的prototype有constructor和__proto__两个属性
4.obj.__proto__ = Fn.prototype;
Fn.prototype.constructor = Fn;
5.Object是js中所有对象数据类型的基类(最顶层的类),Object.prototype.__proto__ = null;
6.类是函数数据类型产生的,属于函数数据类型,姑且认为类就是这个函数,一个类的公共属性和方法放在这个类的prototype上,同时为了方便起见,prototype里内置了1个固定的属性constuctor,constuctor指向这个类本身,因为prototype是一个对象,而每一个对象都有__proto__,这个属性值是当前对象所属类的prototype
function Cat(name){ this.name=name } Cat.prototype.legs = 4; var cat = new Cat("huahua"); // 当前对象所属类的prototype cat.__proto__ = Cat.prototype;