ログの目的のために、要素関数のプロパティのラッパー関数を作成しました。呼び出された関数の現在の要素プロパティ名にアクセスする方法
functionsWrapper: function() {
for (i = 0, args = new Array(arguments.length); i < arguments.length; i++) {
args[i] = arguments[i];
}
console.log('call for ' + arguments.callee.name + ' with params ' + argumantsLog(args));
return this['original' + arguments.callee.name].apply(this, args);
}
そして私は、要素の機能をラップするためにこのコードを使用しています: ラッパー関数は、上記で
logFunctionsCalls: function (element) {
if (!element)
return;
if (element.children && element.children.length)
for (var i = 0; i < element.children.length; i++)
logFunctionsCalls(element.children[i]);
if (!element.functionsLogged) {
element.functionsLogged = true;
for (var property in element) {
if (typeof element[property] != 'function')
continue;
element['original' + property] = element[property];
element[property] = functionsWrapper;
}
}
}
私の問題は、arguments.callee
がのプロパティ名を指定せずにfunctionsWrapper
コードが含まれていることです呼び出された関数
'arguments.callee.name'?これは廃止予定のものと非標準のものの1つで、どちらも実際にあなたを助けません。 – Bergi