2015-12-19 4 views
0

На скриншоте ниже показан выделенный объект JavaScript типа Telerik.Web.UI.Grid.Получить истинный тип объекта в JavaScript

True Object Type in JavaScript

Вопрос: Что было бы правильным JavaScript код, чтобы получить истинный тип объекта JavaScript $telerik.radControls[6]? Мне нужно динамически определять истинный тип во время выполнения в JavaScript, а затем делать что-то, основанное на истинном типе.

Я пробовал код ниже, но typeof всегда возвращает object.

if (typeof $telerik.radControls[6] === "Telerik.Web.UI.RadGrid") { 
    //do something 
} else if(typeof $telerik.radControls[6] === "Telerik.Web.UI.RadSearchBox") { 
//do something 
} else if (typeof $telerik.radControls[6] === "Telerik.Web.UI.RadTreeView") { 
//do something 
} 

UPDATE 1

Я попытался несколько предложений, упомянутых в комментариях, но я не доступен, когда я использую instanceof как в экране показано ниже.

enter image description here

UPDATE 2

Я нашел интересный факт при использовании instanceof определить истинный тип объекта JavaScript. Код ниже не будет работать всегда. Он будет работать только в том случае, если уже существует объект типа Telerik.Web.UI.RadGrid, т. Е. Был вызван конструктор для типа объекта, который мы проверяем. Я получил следующую ошибку, когда объект Telerik.Web.UI.RadGrid не был создан.

Uncaught TypeError: Expecting a function in instanceof check, but got undefined

небезопасный код, который будет работать только если тип объекта существует

if (x instance of Telerik.Web.UI.RadGrid) { 
    //do something 
} 

Однако, когда я использовал код, как показано ниже, то он не выдаст ошибку, даже если ни один объект Telerik.Web.UI.RaGrid типа не имеет был создан.

Безопасный код, который будет работать всегда есть не выдаст ошибку

if (typeof Telerik.Web.UI.RadGrid !== "undefined && x instance of Telerik.Web.UI.RadGrid) { 
    //do something 
} 
+1

'если ($ telerik.radControls [6] InstanceOf Telerik.Web.UI.Grid) {...' при условии, что ' Telerik.Web.UI.Grid' - это функция-конструктор, которая содержит прототип объекта. –

+1

Вам нужно будет проверить 'instanceOf' – Rajesh

+0

Ok. Дай мне попробовать. – Sunil

ответ

3

Оператор instanceof даст вам логический результат, говорю вам, если его левый операнд, объект, имеет .prototype правого операнда , функция в своей прототипной цепочке.

Так предполагая Telerik.Web.UI.RadGrid это функция конструктора, вы можете сделать это:

$telerik.radControls[6] instanceof Telerik.Web.UI.RadGrid 
Смежные вопросы