2012-12-03 16 views
6

Olası Yinelenen:
How can I get the memory address of a JavaScript variable?baskı JavaScript işleyici/bir dizinin bir referans (ya da nesne)

bir yol var, JavaScript içinde, bir dizi referans baskı ?

Ne yapmak istediğiniz iki diziler aynı başvuru olup olmadığını kontrol etmek ve bu mesaj da anlaşılacağı gibi bu yapılabilir: Örneğin eğer ben, How to check if two vars have the same reference?

Ama referansı yazdırmak mümkündür bir dizi ile çalışmak?

Örnek

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

var thesame = Array1==Array2; 

aynı değer false olup.

Ancak, o Array1 referansını javascript'te window.alert(@Array1); gibi bir şeyle yazdırabilir miyim?

--update -

Ne tam olarak istediğiniz başvuruluyor gerçek adres alanıdır.

+0

Referansı nasıl yazdırırsınız? 'Typeof()' ile –

+0

sadece bir nesne olduğu yanıtını alıyorum. Burada bakın http://jsbin.com/ezokam/1/ –

+0

Ne soruyorsunuz, başvurulan gerçek adres alanının mı yoksa "Array" yazmasını mı istiyorsunuz? – PinnyM

cevap

3

Javascript uygulamaları sadece ECMA spesifikasyonlarına uyduğu ölçüde standartlaştırılmıştır. Bellek depolamanın incelikleri tarayıcıya göre farklılık gösterebilir ve JS'ye erişilemez.

ile ilgili olarak, nedeniyle ilgili olarak: JS, hafif bir komut dosyası dilidir. Bellek yönetimini ve optimizasyon görevlerini platforma aktarabilirsiniz, bununla birlikte bunun için bir arabirimi açığa çıkarmak için gereksiz kasnak atlama gerektirecektir.

+0

Tamam, söylediklerinizden, GERÇEK bellek konumunu elde etmenin mümkün olmadığını anlıyorum. Ancak, işaretçinin/referansın dahili bir temsili de iyi olurdu. Anlayamadığım şey, @Minko Gechev yorumunda yazdığım şey. –

+0

@DanieleB Bunun için ne gerekiyor? –

3

Başvurulan türde (dizi, nesne) bir çeşit işaretçinin değerini görmek istiyorsanız, yapamazsınız.

Örneğin, Perl'de bir şeye referans olan bir skaler tipiniz vardır. Bu skaleyi yazdırdığınızda, işaretçinin değere dize olarak gösterilmesi gibi bir şey alabilirsiniz. JavaScript'te bu tür bir skaler benzetmesi yoktur.

Sadece iki referansın aynı şeyi işaretleyip işaretlemediğini kontrol edebilirsiniz.

GC ile tüm dillerde olduğu gibi, JavaScript'te, aynı nesnenin program yürütme boyunca aynı bellek işaretçisiyle aynı olduğundan emin olamazsınız (öbekte taşınabilir). Bahsettiğim gibi, dilde yapı tipi olarak bir işaretçi özetiniz yok. Mevcut referansı göstermek çok iyi bir fikir olmayabilir, çünkü dinamik olabilir (motorun mimarisine ve özellikle GC'ye bağlı olarak).

+1

Bu garip olan şey. Eğer iki referansı karşılaştırabiliyorsan, gerçek değerlerini neden bilemezsin? –

+0

@DanieleB Javascript'te geliştiricinin görebileceği bir bellek ayırma kavramı olmadığı için, bu nedenle bellekte konumlarını bilmek için bir neden yok – Ian

+0

@DanieleB Muhtemelen işaretçileri – Neil

İlgili konular