Функции упаковки и функции. Длина

Давайте рассмотрим, что у меня есть следующий код

/*...*/
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 построить новую строку с тем же количеством аргументов. Я хочу избежать этого.

6
задан Raynos 6 September 2011 в 20:50
поделиться