#javascript #constructor
#javascript #конструктор
Вопрос:
Где-то конструктор определяется как
var Something = function() {
// do stuff
}
Если бы я мог вставить строку
mydebug.Something = this;
вначале я мог бы сохранить самый последний созданный экземпляр Something
, что помогло бы мне в отладке. Я не могу, но мне передают Something
(функцию и ее имя) и я могу заменить ее чем-то другим. Я просто не знаю, как заставить «что-то еще» вести себя как оригинал.
function intercept(someConstructor, someName) {
return function <<someName>> () { // 1
var result = <<create a new instance>>; // 2
mydebug[someName] = resu<
return resu<
}
}
который вызывался бы как
intercept(Something, "Something")
Существует как минимум две проблемы:
- Я не знаю, как создать функцию, имеющую имя, заданное переменной.
- Я не знаю, как создать экземпляр.
Ответ №1:
Для 1:
В зависимости от того, где вы храните эту функцию, вам не обязательно называть ее в вашей реализации intercept.
Вы можете просто сделать return function () { ...
или вы можете сделать что-то похожее на someObject[someName] = function()...
, а затем вернуть someObject[someName]
.
Для 2:
Если я правильно понимаю, вы должны быть в состоянии просто сделать var result = new someConstructor();
, но мне не на 100% ясна ваша цель.