@vasIvas

Почему typeof ведет себя непредсказуемо?

Enum.ONE_TYPE = new Enum( );
Enum.TWO_TYPE = new Enum( );

function Enum( ){
	this.name = 'Enum';
}
Enum.prototype.toString = function( ){
	return '[object ' + this.name + ']';
}



var objects = {};
objects[Enum.ONE_TYPE] = 'one';

console.log( typeof objects[Enum.TWO_TYPE], // string
			 typeof objects['string'], // undefined
			 typeof objects[{}] ); // undefined

Почему на несуществующий ключ Enum.TWO_TYPE возвращается string?

Целый день ушло на выявление причины, час на выявление проблемы и только я задал вопрос, как мне кажется, нашел ответ.
Ведь ассоциативный массив хранит ключи в string формате и для него все объекты одинаковые, если у них toString одинаков. Правильно?
  • Вопрос задан
  • 2296 просмотров
Пригласить эксперта
Ответы на вопрос 1
'' + Enum.ONE_TYPE == '[object Enum]'
'' + Enum.TWO_TYPE == '[object Enum]'
objects['[object Enum]'] == 'one'


Дальше объяснять, или этого достаточно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы