gpt4 book ai didi

javascript - 为什么 **(Object.__proto__ instanceof Function)** === false?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:19:19 25 4
gpt4 key购买 nike

为什么 Object._proto_ instanceof Function 给我 false?

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 实现都支持。

关于javascript - 为什么 **(Object.__proto__ instanceof Function)** === false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5963936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com