В Chrome связанные функции JS имеют нулевые arguments.callee.caller - PullRequest
1 голос
/ 21 февраля 2012

Начиная с Chrome 17, arguments.callee.caller кажется нулевым для связанных функций:

function a() {
  this.test = function() { console.debug('*** ' + arguments.callee.caller); };
  this.test();  // This prints the function
  this.bound = this.test.bind(this);
  this.bound(); // This prints null
}

Связанные и несвязанные функции используются для согласованного действия, но больше не для этого.

Это ожидаемое поведение?

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

arguments.callee и компания устарела. Они выбрасывают ошибки в строгом режиме. Я предполагаю, что они постепенно сокращаются в новых версиях Chrome. Я не могу подтвердить, хотя, потому что я все еще на 16.

1 голос
/ 21 февраля 2012

Может быть, это не ошибка. Вы можете отметить это:
If the function f was invoked by the top level code, the value of f.caller is null, otherwise it's the function that called f. MDN

И когда вы используете это в функции a, 'this' означает DOMWindow. поэтому, когда вы привязываете связанную функцию к this, связанная функция была вызвана кодом верхнего уровня. Возвращает null.

Пусть это поможет. rdtriny.

...