У меня есть hash 'h' и есть код вроде:
h[key].dostuff()
Когда ключ не существует в хеше, h [ключ] не определен, и я получаю сообщение об ошибке, что я не могу вызывать метод "dostuff" undefined.
Есть ли способ добавить этот метод к undefined, если undefined является расширяемым классом?
Я уверен, что это должно быть обычным делом, поэтому есть ли предпочтительный способ обработки этого, не прибегая к обходной функции, например hh (key), в которой я мог бы манипулировать неопределенными результатами?
Благодарю.
Поскольку undefined
приравнивается к false
в javascript, вы можете комбинировать проверку значения и вызов функции, например:
h[key] && h[key].dostuff();
Это гарантирует, что если h[key]
имеет значение, dostuff()
.
if( h[key])
h[key].dostuff()
это проверка "если значение существует, doStuff()"
Вы всегда можете сделать что-то вроде этого:
h.get = function(key) {
if(this.hasOwnProperty(key))
return this[key];
//here return a default object, whatever that would be
return {doStuff: function() {
//default doStuff function
}};
};
h.get(key).doStuff();
Я знаю, это небольшое принудительное решение, но оно может каким-то образом имитировать поведение по умолчанию.
if
, но я предпочитаю удобочитаемость и согласен с этим. Я очень обеспокоен, когда вижу, как логическая ценность исчезает в пропасти переводчика.I'm quite disturbed to see a logical value disappear like this in the abyss of the interpreter.
Ха! Добро пожаловать в типы данных в Javascript: D На самом деле личное предпочтение зависит от того, используете ли вы этот метод или стандартное условиеif
. Я предпочитаю этот для краткости.