同系列文章请查看:Github:pre-interview
原型链
1 | // 要有顺着原型链找东西的技巧 |
经典图:
可以看到实例对象 顺着原型链可以找到Object的原型对象
Object的原型对象上有很多定义好的方法
另外Object的原型对象与Function的原型对象也有联系 即——
Function.prototype.__proto__
= Object.prototypeFn.proto = Function.prototype;
Function.prototype.proto = Object.prototype;这样Fn(构造函数)就可以访问Object上定义的方法fn(
Object.prototype.fn = function(){...}
)了!
面试题
1 | function F(){} |
分析下这四部分:
【1】实例对象f 顺着原型链(的__proto__
属性)
-> 实例对象F() -> 空Object对象 -> Object对象的显式原型
可以在Object的显示原型上找到a方法
【2】同理 顺着原型链找
-> 实例对象F()-> 空Object对象 -> Object对象的显式原型 -> null
Object对象的显式原型就是原型链的尽头了!没法再找到Function的原型对象了.
【3】从函数对象 通过隐式原型属性 顺着原型链找
这里需要注意 直接打印F 是没有办法获得它的
__proto__
属性的可以通过其原型对象的constructor来获取(见下图)
-> Function对象的显式原型 -> Object对象的显式原型
Tips: Please indicate the source and original author when reprinting or quoting this article.