Давайте рассмотрим, что у меня есть следующий код
/*...*/
var _fun = fun;
fun = function() {
/*...*/
_fun.apply(this, arguments);
}
, я только что потерял данные . Длина
_fun
Потому что я пытался обернуть его некоторой логикой перехвата.
Ниже не работает
var f = function(a,b) { };
console.log(f.length); // 2
f.length = 4;
console.log(f.length); // 2
Аннотированные состояния спецификации ES5.1 , что . Длина
определяется следующим образом
Object.defineProperty(fun, "length", {
value: /*...*/,
writable: false,
configurable: false,
enumerable: false
}
, учитывая, что логика внутри
Требуется . Длина
, чтобы быть точным, как я могу перехватить и перезаписать эту функцию, не разрушая . Длина
данных?
У меня есть чувство, что мне нужно будет использовать EVALL
и функция CODGY . Prototype.tostring
построить новую строку с тем же количеством аргументов. Я хочу избежать этого.