Что эквивалентно "has_key" в javascript?

if dictionary.has_key('school'):

Как вы напишете это в javascript?

Ответы

Ответ 1

hasOwnProperty:

if(Object.prototype.hasOwnProperty.call(dictionary, key)) {
    // ...

Вы также можете использовать оператор in, но иногда он дает нежелательные результаты:

console.log('watch' in dictionary); // always true

Ответ 2

Либо с in оператор:

if('school' in dictionary) { …

Или, возможно, поддерживается в более баустерах: hasOwnProperty

if(dictionary.hasOwnProperty('school')) { …

В пограничных случаях может быть проблематично: typeof

if(typeof dictionary.school != 'undefined') { …

Нельзя использовать != undefined, поскольку undefined не является ключевым словом, а семантика его зависит от браузера:

if(dictionary.school != undefined) { …

Ответ 3

Оператор 'in'.

if ('school' in dictionary)

Ответ 4

Вы также можете попробовать:

if(dictionary.hasOwnProperty('school'))

Метод hasOwnProperty будет оценивать только true, если свойство действительно находится на экземпляре, а не просто унаследовано от прототипа - как в случае с in.

Например, evaluting ('toString' in myObject) будет true, а myObject.hasOwnProperty('toString') будет false.

Ответ 5

Или даже,

if(dictionary.school!=undefined)