以下腳本將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