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  这样认真回复的童鞋讨论...

嗯,就这样...

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部