js怪癖

var arr=new Array(1,2,3);
alert(arr instanceof Array);      //true
alert(arr instanceof Object);    //true
alert(Array instanceof Object); //true
儿子认爹也认爷爷

alert(arr instanceof Array);       //true
alert(Array instanceof Function);  //true
alert(arr instanceof Function);   //false
儿子认爹不认爷爷

alert(Object instanceof Function);   //true
alert(Function instanceof Object);   //true
兄弟俩互相喊爹

alert(Function instanceof Function);  //true
alert(Object instanceof Object);   //true
又当爹又当儿

-------------------------------
好吧,有人说我无的放矢,我就说说我的疑惑
其实我主要是想吐槽 “认爹不认爷爷”那儿。

arr 是 Array的实例, Array是构造函数而构造函数本身也是个普通函数,而js里函数又都是Function的实例,所以按照原型链的原理 arr instanceof Function 应该是true... 但是实际却是false... 

话又说回来,arr 本来就是个数组而已,返回false也并不难理解...

@Shihang Wei  童鞋也说了arr的原型链上没有等于Function.prototype的对象,所以返回false

但是我还是理解不了为什么arr顺着原型链往上推的话,到Funciton这儿会断了...

很喜欢和  @Shihang Wei  这样认真回复的童鞋讨论...

嗯,就这样...

愿意给小弟解惑的就认真评论下,别不负责任的丢下一句话就走了- -!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值