以下脚本将false
记录到控制台。有谁知道为什么或者它带来什么好处?window.Object!=对象为greasemonkey脚本
从简单到一目了然的Greasemonkey的源代码,我找不到任何修改Object
。同样看着Object
,很难看到任何有意义的差异,所有的功能仍然是本地代码。
// ==UserScript==
// @name test
// @namespace test
// @include *
// @grant none
// ==/UserScript==
console.log(window.Object == Object)
(上Greasemonkey的&火狐,不知道Scriptish & Chrome的测试,但任何实验的欢迎!)。
[注:这个问题是无关到{a: 2} != {a: 2}
问题,请在标题阅读问题本身,而不是只是你一眼施放任何接近的选票,前感谢!]。
你不能只是简单地比较对象,因为他们将永远是相同的(在内存中不同的引用等)中的JavaScript对象比较(http://stackoverflow.com/questions/1068834/object-comparison- in-javascript) – Justinas
@Justinas我不确定这是相关的,这一个是对象类,另一个是实例。 – simonzack
看起来'window'不是这种情况下的全局对象,而是引用了当前页面的窗口对象。因此,像两个框架/窗口不共享相同的类(相同但不相同),“Object”和“window.Object”也不是相同的参考。这是基本的沙箱,所以一个帧/窗口不会干扰其他帧/窗口的全局变量。想象一个页面会修改Object.prototype,并且浏览器中的所有窗口都会得到这种改变。 – Thomas