у меня есть:Функция становится неопределенной, когда вернулся
- словарь (
functions
) отображение строк префиксы к функциям - функции (
get()
), которая возвращает функцию, отображенную на строку - функции (
check()
), который проверяет, есть ли функция, сопоставленная с строкой, вызываяget()
и отбрасывая ее на логическое значение с!!
.
Когда я называю get()
с ключом в functions
, я ожидаю, что check()
возвращает true
; однако он возвращает false
. Я выполняю поиск словаря в get()
и печатаю тип результата в обеих функциях. Вот странная часть. Тип function
только в get()
; в check()
, это undefined
. По-видимому, функция стирается или что-то, когда я возвращаю ее. Как я могу сделать check()
точным?
Вот мой упрощенный код:
var someObject = {
functions: {
"a": function() { return 0; },
"b": function() { return 1; }
},
get: (function (someVariable) {
Object.keys(this.functions).forEach((function (functionKey) {
if (someVariable.startsWith(functionKey)) {
console.log(typeof this.functions[ functionKey ]);
return this.functions[ functionKey];
}
}).bind(this));
}),
check: function (stringToCheck) {
var returnedFunction = this.get(stringToCheck);
console.log(typeof returnedFunction);
return !!returnedFunction;
}
}
$(document).ready(function() {
someObject.check("a");
});
Выполнение этого кода производит это:
"function"
"undefined"
в консоли.