JS原型链
参考:mdn js秘密花园 hattle的博客
对于js的原型链概念,一直都没有一个清晰的认知,最近看了许多参考资料,才算把这一块内容大致弄明白。
基本概念
在js中,一切皆对象
每个对象都有一个指向它的原型的的内部链接(此链接还没有规范的访问方式,一般用__proro__代替),这个原型也有自己的原型,直到每个对象的原型为
null
为止任意一个函数都可以作为构造器即
var someFun = new AnyFun()
每个函数都有一个
prototype
属性,其它对象没有,该属性也是一个对象,该对象有一个constructor
属性指向该函数使用
new
去实例化一个函数后,得到的是一个对象。该函数的实例的原型指向构造函数的prototype
属性
图示
图片来自 Hattle的博客
上面图片可以很好的表明js中原型链的关系。
Object.prototype
是凭空产生的Function.prototype
可看作是由Object
产生的Object
可看作是Function
产生的Function
可看作是由自己创建的
和原型有关的API
-
instanceof
, 测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性`object instanceof constructor`
检测 constructor.prototype 是否存在于参数 object 的原型链上
Object.getPrototypeOf(obj)
得到obj的原型
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。