原型链之论Object和Function的关系

原型链之论Object和Function的关系

  1. 每个函数都有一个prototype属性,它指向一个空对象,称原型对象(公共区域)!
  2. 每个函数的实例对象,都有一个__proto__属性,称隐式原型,实例对象隐式原型的值,为其对应函数显示原型的值。(所以原型链是通过隐式原型链去找自身没有的属性和方法)!
  3. 函数对象都是由Function函数生成的,而Function自身,本身也是函数,所以也由Function生成,则有Function.proto == Function.prototype //true (函数是自身的实例)
  4. Object也是构造函数,所以Object.proto == Function.prototype //对象是函数的实例
  5. js中规定,函数的原型,是Object的实例,则有:Function.prototype.proto == Object.prototype //true (函数原型对象是对象的实例)
  6. 而函数本身并非Object的实例,则Function.proto == Object.prototype //fasle
  7. 任何实例函数都可以访问到Object中的原型,而访问不到Funcion中的原型对象;eg:就函数F和它的实例对象f来说:
    (1): f.proto == F.prototype //true
    (2) F.prototype.proto == Object.prototype //true (函数对象,是Object的实例)
    (3) F.proto == Function.prototype //true
    (4) F.prototype__proto__ == Function.prototype //fasle
    总结:1.通过隐式原型链,f.proto 到 F.prototype; 从 F.prototype.proto 到 Object.prototype,所以所以函数都可以访问到Object中的原型对象 ;
    2.通过隐式原型链,f.proto 到 F.prototype;但 F.prototype.proto 不能到Function.prototype(只能是F.proto===Function.prototype),所以访问不到函数中的原型对象!
    3.函数和对象互为实例的说法是错误的,因为Object.proto === Function.prototype 但Function.proto != Object.prototype,所以我认为只能说,对象是函数的实例,函数的原型对象是对象的实例!!
    (注:以上仅为个人总结认为观点,可能有错误,如有请帮忙指出!)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值