js原型链

图片引自https://juejin.im/post/5b44a485e51d4519945fb6b7#comment

看到这张图的第一感觉是

对于完整的原型链大家平常可能接触的并不多,容易忘记,单看图并不是很好理解,以下是在控制台的输出 首先要知道_proto_的作用,__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性。指向自身构造函数的原型,同理调用prototype可以看作调用者是函数,__proto__调用者可以看成是对象 以Object开始直到回到Object

Object.constructor
=> ƒ Function() { [native code] } 等同于 function Function { [native code] }
Object的构造函数其实是一具名函数 Function

Object.constructor.constructor
=> ƒ () { [native code] } 等同于匿名函数 function(){ [native code] }

Object.constructor.__proto__ == Object.constructor.prototype
=> ƒ () { [native code] }

Object.constructor.__proto__.constructor
=> ƒ Function() { [native code] } 等同于 function Function { [native code] }

Object.constructor.__proto__.__proto__
=> Object.prototype 如下
{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}

Object.constructor.__proto__.__proto__.constructor
=> Object 又回到了自己
Object.constructor.__proto__.__proto__.__proto__ 
=> Null
复制代码

至于程序为什么这么设计,这里就不再讨论了,有一点 一开始学习记住是什么比为什么更重要,因为谁也解释不了1+1为什么等于二,记忆很重要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值