为什么函数的 Object._proto_ instance给我假?

alert(Object.__proto__ ); //  clearly Object.__proto__ is a function right?
alert(typeof Object.__proto__); // clearly Object.__proto__ is a function right?
alert(Object.__proto__ instanceof Function); // !

最佳答案

并非所有函数都是通过Function构造函数创建的。 instanceof专门检查以查看给定项目是否由该特定功能创建。

当处理多个窗口时,在浏览器环境中会获得类似的效果。我的意思是,如果您在窗口A中具有foo函数:

function foo(arg) {
    if (arg instanceof Array) {
        // It's an array, do something
    }
}

...并且在另一个调用它的窗口B中有代码:
opener.foo([]);

...然后您会期望foo意识到arg是一个数组,对吗?但这不是因为arg是一个数组,但它不是由Array所在的窗口中的foo构造函数创建的。

有关弄清楚这里是什么的更多信息:Say what?

如果您对这种东西着迷(看起来似乎如此),那么没有什么比阅读the specification更像了。是的,散文是...干的...术语是......密集的...但是随着您对基础工作的了解越来越多,它变得越来越有趣。

脱位:请注意__proto__是非标准的,并非所有JavaScript实现都支持。

07-24 09:43
查看更多