2016-03-23 35 views
3

birisi aşağıdaki JavaScript kurucular açısından yapıyor ve nasıl bir değişkene tanımlandığı işlevini çağırarak/hangisini kullandığına bana açıklayabilir?Bu Javascript parçasında neler oluyor?

<script> 
a = 'alert("Hi");' 
{}["apple"]["constructor"]["constructor"](a)(); 
</script> 

Teşekkürler!

+0

bu şekilde 'Object.apple.constructor.constructor (a) ila() aynıdır;'. – Jai

+0

'{} [" apple "] [" yapıcı "] [" yapıcı "]' return işleviyle aynı işlevde kullanılabilen işlev işlevi. – jcubic

+1

@Jai, aynı değil çünkü bu durumda {} 'bir nesne değil boş blok. Nesne olsaydı, 'Özellik' yapılamıyor 'yapıcı' undefined '' – jcubic

cevap

12

ilk {} boş bir blok olarak yorumlanır ve göz ardı ediyor, sadece bir yem. Bu yüzden

["apple"]["constructor"]["constructor"](a)() 

olduğunu

Function(a)() 

olduğunu

Array.constructor(a)() 

olduğunu

[].constructor.constructor(a)() 

olan var 0

(function() { alert('Hi') })() 

constructor da burada yapı sayesinde, prototip ile çözümlenir:

enter image description here

+1

(a)()' –

+0

@PaulFitzgerald: - Şimdi anlaşılıyor Umarım pic resim için – georg

+0

@georg teşekkürler açıklık getirmektedir. :) – DavidL

İlgili konular