2012-12-03 35 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