为什么函数的 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实现都支持。