prototype和__proto__的区别&&constructor 与 prototype 为何形成循环嵌套

1.Javascript中所有的对象都是Object的实例,并继承Object.prototype的属性和方法,也就是说,Object.prototype是最底层。

prototype是函数才有的属性
__proto__是每个对象都有的属性

prototype 就是一个对象,所以它有 __proto__ 属性,__proto__ 同时又指向 constructor 下的 prototype ,从而 形成了原型链,直到指向底层 Object.prototype 
(Object.prototype.__proto__ === null)   
Object  =>  ƒ Object() { [native code] }   ([native code] 指的是底层代码)

2.constructor 与 prototype 循环嵌套:
任何函数的constructor属性都指向Function类,而Function类的constructor又指向谁呢?其实也是Function类本身,也就构成了一个递归。
Object.prototype输出值为:{constructor: ƒ, defineGetter: ƒ, defineSetter: ƒ, hasOwnProperty: ƒ, lookupGetter: ƒ, …}
constructor 和 f 又组成一组对象,f 下又存在 prototype , 从而 f.prototype 下又指向 constructor, 进而形成嵌套。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值