关与原型链的问题,求老师解答

关与原型链的问题,求老师解答

var F=function(){};

Object.prototype.a=function(){
    console.log('a()')
};

Function.prototype.b=function(){
    console.log('b()')
}

var f=new F();

f.a()//?
f.b()//?
F.a()//?
F.b()//?

不懂为什么f.b() 报错???

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,如下, 可以打印下查看F原型对象的__proto__属性指向Object的原型对象。所以F既可以访问到自己原型上的b方法,也可以通过原型链访问到a方法。

http://img1.sycdn.imooc.com//climg/5e5b36b3098cb41813880118.jpg

http://img1.sycdn.imooc.com//climg/5e5b36f809e8cd3606460190.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • codeyjw 提问者 #1
    懂了,谢谢!
    2020-03-01 12:26:25
好帮手慕慕子 2020-03-01 11:42:06

同学你好,如下所示,可以打印下查看F的原型对象

http://img1.sycdn.imooc.com//climg/5e5b2f02098372e806060136.jpg

指向的是Object

http://img1.sycdn.imooc.com//climg/5e5b2bb209fabb6405560128.jpg
而f.__proto__指向F的原型对象,所以可以调用a方法,无法调用b方法。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 codeyjw #1
    那为啥f既可以调用a 也可以调用b呢?
    2020-03-01 12:13:00
  • 提问者 codeyjw #2
    是F,说错了..
    2020-03-01 12:13:41
  • 提问者 codeyjw #3
    您好老师,我想了一下,是不是可以这理解 因为F是函数对象,所以既有__proto__(隐式原型)和prototype(显示原型) 而F.__proto__ 指向的是 Function.prototype 所以 F可以调用b方法, F.protptype.__proto__ 指向 Object.prototype 所以F也可以调用 a方法
    2020-03-01 12:24:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师