JS原型链理解

1. 每个对象都有原型属性(__proto__)
2. 对象的原型(__proto__)指向其构造函数(Constructor)的prototype属性
3. 构造函数(Constructor)的prototype属性本身也是一个对象,其原型(__proto__)亦指向其构造函数的prototype
4. 如此形成一个链式结构,而Constructor.prototype若没有自定义构造函数,则其始终是一个对象,构造函数为Object,
  原型为Object.prototype
5. Object.prototype的原型为null,原型链结束

原型链一般用来查找对象的属性和方法,进行类的继承等功能

现象说明

Object.prototype.__proto__ === null   JS世界的源头一片荒芜,一切皆空

Object.__proto__ == Function.prototype   Object是构造器,本身也是函数,所以其原型就是Function的prototype

Function.__proto__ == Function.prototype  Function也是一种函数,所以其原型也是Function的prototype


相关方法

object.hasOwnProperty(propName)  判断对象本身是否有该成员,而不是从原型链继承的成员

object1.isPrototypeOf(object2)        判断object1是否在object2的原型链上

posted @ 2016-11-21 11:55  全玉  阅读(180)  评论(0编辑  收藏  举报