JS原型链

今天刷题遇到一个原型链的题目,感觉对理解原型链有点帮助。记录一下。
原题如下:

var F = function(){};
Object.prototype.a = function(){};
Function.prototype.b = function(){};
var f = new F();

关于这段代码,正确的是:()
A、f能取到a,但是取不到b
B、f能取到a,b
C、F能取到b,不能取到a
D、F能取到a,不能取到b


由题目的代码,可以得到的信息是:
1、把一个匿名函数赋给了变量F,所以F是一个函数;
2、在Object对象的原型上添加了一个属性a。并且a的值为一个匿名函数;
3、在Function对象的原型上添加了一个属性b。并且b的值为一个匿名函数;
4、new了一个f对象,且f的构造函数是F。

还需要知道的一个知识点是:普通对象是它的构造函数的实例,而函数(虽然也是对象,但函数不是普通对象)是Function的实例。
由此可以做以下分析:
对对象f的原型链分析:
对对象f进行分析
对函数F的原型链分析
函数F的原型链分析
由此可以看出,对象f的原型链经过的是F的原型对象Object的原型对象。所以f只能拿到a。
而函数F的原型链经过的是Function的原型对象Object的原型对象。所以F能拿到a和b。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值