MallSerg,
Что касается твоих примитивных типов, то вот тебе пример для медитации, позволяющий понять, приблизительно, что происходит на уровне исполнителя
singleton={
clone: function(){return this}
}
a=singleton.clone()
b=singleton.clone()
alert(a===b)
Серьезные CS - дяди, называют это самовычисляющимися выражениями. Объяснить это энтерпрайзному быдлу обычно не представляется возможным. Чтобы понять все "правильно", желательно написать свой интерпретатор, или хотя бы изучить исходники. Поэтому, существуют разные суррогатные словечки, типа, примитивы, по-значению, ко-ко-ко. Но такой взгляд весьма поверхностен, хотя, наверное, работает, для большинства быдлокодеров, их это устраивает.