2012-12-03 38 views
6

可能重複:
How can I get the memory address of a JavaScript variable?打印在Javascript中的陣列的處理程序/參考(或對象)

有一種方法,在javascript,要打印的陣列的參考?

我想要做的是檢查兩個數組有相同的參考,而這是可以做到這樣的職位表明:How to check if two vars have the same reference?

但是,它可以打印參考,舉例來說如果我使用數組?

var Array1=["hi"]; 
var Array2=["hello"]; 

var thesame = Array1==Array2; 

相同的值是false

但是,我可以打印他Array1的參考與像JavaScript的window.alert(@Array1); somethink?

--update -

我到底要爲所引用的實際地址空間。

+0

如何打印參考? –

+0

'typeof()'我只得到它是一個對象的響應。請看這裏http://jsbin.com/ezokam/1/ –

+0

你在問什麼,你想要引用的實際地址空間,還是你想打印'數組'? – PinnyM

回答

3

JavaScript實現只是標準化,因爲他們遵循ECMA規範。內存存儲的複雜性可能因瀏覽器而不同,並且不能被JS訪問。

至於你的問題爲什麼有關:JS是一種輕量級的腳本語言。將內存管理和優化任務委託給平臺是有意義的,然而這將需要不必要的環向跳躍來爲您呈現一個接口。

+0

好吧我從你說的理解是不可能獲得真正的內存位置。但是,指針/引用的內部表示也沒問題。我無法弄清楚的是我在@Minko Gechev評論中寫的。 –

+0

@DanieleB你需要什麼? –

3

如果你想看到某種指向被引用類型(數組,對象)的指針的值 - 你不能。

例如,在Perl中,你有一個標量類型,它是對某個東西的引用。當你打印這個標量時,你可以得到類似指向值的指針的字符串表示。 JavaScript中沒有這種標量的類比。

您只能檢查兩個引用是否指向相同的東西。

與所有帶GC的語言一樣,在JavaScript中,您無法確定相同的對象在程序執行過程中會有相同的內存指針(它可以在堆中移動)。正如我所提到的,您沒有在語言中使用指針作爲內置類型的抽象。因此,顯示當前的參考可能不是一個好主意,因爲它可能是動態的(取決於引擎的架構,特別是GC)。

+1

這有什麼奇怪的。如果你可以比較兩個參考,爲什麼你不知道他們的實際價值? –

+0

@DanieleB因爲有在Javascript中可見的內存分配沒有什麼概念的開發者,因此沒有理由知道它們在內存中 – Ian

+0

@DanieleB大概位置,因爲它將使你則治其指針作爲整數和整數作爲指針 – Neil