dom1n1k
@dom1n1k

Как узнать класс, инстансом которого является объект?

Столкнулся тут с Bing Maps API и прямо с порога получил совершенно прекрасное:
map = new Microsoft.Maps.Map('#map', { ... });
console.log(map instanceof Microsoft.Maps.Map);  // false

У меня аж челюсть слегка отвисла. А как это? Делаем new класса, потом его же проверяем - он "я не я и жопа не моя".
Карта точно создается, её видно в браузере, она работает.

Но тогда какой же там класс, как его узнать?!
  • Вопрос задан
  • 193 просмотра
Пригласить эксперта
Ответы на вопрос 2
@pekc83
Это же Javascript, а не Java. Здесь класс не класс, а ООП имеет нетрадиционную ориентацию. Хотите гарантированно получить true, пожалуйста: map instanceof map.constructor; // true!
Можно и имя его посмотреть: map.constructor.name === 'n';. Следовательно Microsoft.Maps.Map - фабрика, а этот конструктор был сжат минификатором и не предусматривает доступа извне.
Остается только вопрос, а нужен ли вам этот класс...
Ответ написан
@vshvydky
map instanceof Object
true
typeof map
"object"
map instanceof Microsoft.Maps.Map
true

UPD:
Судя по их примеру , они ожидают не цсс селектор, а ссылку на объект
map = new Microsoft.Maps.Map(document.getElementById("myMap"),
                         {credentials:"Bing Maps Key"});
Ответ написан
Ваш ответ на вопрос

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

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