原型prototype和隐式原型__proto__

prototype:原型,其实也是Object创建的一个普通对象,在Object.prototype中有一些默认的方法,因为Object.prototype是原型链的顶端,因此通过继承,所有对象都有了这些公有的方法。
__proto__:隐式原型,返回的是该对象的直接构造函数的原型

每个函数function都有一个prototype,即原型。每个对象都有一个__proto__,即隐式原型。

  • Object.__proto__ === Function.prototype
  • Object.prototype:普通Object创建的对象
  • Object.prototype.__proto__ === null
  • Object.__proto__ .prototype === Function.prototype.prototype(也就是普通Object创建的对象 )
  • Function.__proto__ === Function.prototype
  • Fn.prototype:普通Object创建的对象
  • Fn.__proto__ === Function.prototype
  • fn.prototype:普通Object创建的对象
  • fn.__proto__ === Fn.prototype
  • obj.prototype:普通Object创建的对象
  • obj.__proto__ === Object.prototype

疑问:因为对象是由Object创建的,而Object是由Function创建的,Function也是个对象,那么它是由谁创建的,经测试 Function instanceof Object以及Function instanceof Function均返回true,以及typeof Function返回“function”,可知Function是由Function创建

那么就还需要再探究下instanceof操作符的含义了
假定Instanceof运算符的第一个变量是一个对象,暂时称为A;第二个变量一般是一个函数,暂时称为B。
Instanceof的判断规则是:沿着A的proto这条线来找,同时沿着B的prototype这条线来找,如果两条线能找到同一个引用,即同一个对象,那么就返回true。如果找到终点还未重合,则返回false。那么就不难理解Function instanceof Function/Object 都返回true的原因了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值