Ответ 1
if(Object.prototype.hasOwnProperty.call(dictionary, key)) {
// ...
Вы также можете использовать оператор in
, но иногда он дает нежелательные результаты:
console.log('watch' in dictionary); // always true
if dictionary.has_key('school'):
Как вы напишете это в javascript?
if(Object.prototype.hasOwnProperty.call(dictionary, key)) {
// ...
Вы также можете использовать оператор in
, но иногда он дает нежелательные результаты:
console.log('watch' in dictionary); // always true
Либо с in
оператор:
if('school' in dictionary) { …
Или, возможно, поддерживается в более баустерах: hasOwnProperty
if(dictionary.hasOwnProperty('school')) { …
В пограничных случаях может быть проблематично: typeof
if(typeof dictionary.school != 'undefined') { …
Нельзя использовать != undefined
, поскольку undefined не является ключевым словом, а семантика его зависит от браузера:
if(dictionary.school != undefined) { …
Оператор 'in'.
if ('school' in dictionary)
Вы также можете попробовать:
if(dictionary.hasOwnProperty('school'))
Метод hasOwnProperty
будет оценивать только true
, если свойство действительно находится на экземпляре, а не просто унаследовано от прототипа - как в случае с in
.
Например, evaluting ('toString' in myObject)
будет true
, а myObject.hasOwnProperty('toString')
будет false
.
Или даже,
if(dictionary.school!=undefined)