Як перевірити наявність у об'єкту певної властивості в JavaScript?
Розглянемо:
x = {'key': 1};
if ( x.hasOwnProperty('key') ) {
//Do this
}
Чи це найкращий спосіб?
if (x.key !== undefined)
Армін Ронахер, здається, вже випередив мене, але:
Object.prototype.hasOwnProperty = function(property) {
return this[property] !== undefined;
};
x = {'key': 1};
if (x.hasOwnProperty('key')) {
alert('have key!');
}
if (!x.hasOwnProperty('bar')) {
alert('no bar!');
}
Безпечнішим, але повільнішим рішенням, як зазначали Конрад Рудольф та Армін Ронахер, було б:
Object.prototype.hasOwnProperty = function(property) {
return typeof this[property] !== 'undefined';
};
Так і є :) Думаю, можна також зробити Object.prototype.hasOwnProperty.call(x, 'key')
, що також повинно спрацювати, якщо x
має властивість з назвою hasOwnProperty
:)
Але це перевірка власних властивостей. Якщо ви хочете перевірити, чи є у нього властивість, яка також може бути успадкована, ви можете використовувати typeof x.foo != 'undefined'
.
Гаразд, схоже, що я дав правильну відповідь, за винятком випадків, коли ви не хочете успадкованого майна:
if (x.hasOwnProperty('key'))
Ось деякі інші варіанти включення успадкованих властивостей:
if (x.key) // Quick and dirty, but it does the same thing as below.
if (x.key !== undefined)