2016-05-15 3 views
1

У меня есть переменная с именем t.Как проверить, имеет ли свойство переменной id?

Несколько раз эта переменная равна некоторому объекту:

var t = {id:2 Name:"Mike" }; 

И несколько раз эта переменная может содержать только string.Like это:

var t = "someString"; 

В какой-то момент мне нужно проверить, если переменная объект, и если он содержит свойство с именем id.

Как проверить, является ли переменная объектом и содержит свойство с именем id?

ответ

3

Использование typeof и hasOwnProperty:

if(typeof t == 'object' && t.hasOwnProperty('id')) { 
    //your code for using t.id 
} 
4

Вы можете использовать && (а) оператор

if (t && t.id && td.id === "blah") 

Или короче:

if (t && t.id === "blah") 
+0

Есть ли причина, чтобы когда-либо использовать первый вариант? –

+0

В этом контексте нет ... Все, что задохнется на 't.id ===', не пройдет мимо первой проверки. –

1

Вы можете проверить переменную с помощью toString.call(value) === '[object Object]' и toString.call(value) === '[object String]'

var t = { 
 
    id: 2, 
 
    Name: "Mike" 
 
}; 
 

 
function isObject(value, property) { 
 
    return value !== null && toString.call(value) === '[object Object]' && value.hasOwnProperty(property); 
 
} 
 

 
function isString(value) { 
 
    return value !== null && toString.call(value) === '[object String]'; 
 
} 
 

 
document.write("isObject : " + isObject(t, 'id') + " | " + "isString : " + isString(t) + "<br>"); 
 

 
var t = "blabla"; 
 

 
document.write("isObject : " + isObject(t, 'id') + " | " + "isString : " + isString(t));

Смежные вопросы