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; 

 

posted @ 2017-01-12 15:20  花.花  阅读(166)  评论(0编辑  收藏  举报