Uso le funzioni freccia in un'app e talvolta è necessario ottenere un riferimento alla funzione stessa. Per le normali funzioni javascript, posso solo nominarli e usare il nome dall'interno. Per le funzioni di freccia, attualmente sto usando arguments.callee
. C'è un modo per nominare le funzioni di freccia in modo che un riferimento possa essere utilizzato dall'interno?C'è un modo per nominare le funzioni freccia in javascript?
codice di esempio
//typescript
private evaluateIf(expr: parserModule.IIfExpression, callback: IEnvCallback) {
this.evaluate(expr.condition, proceed=> {
guard(arguments.callee, arguments, this);
if (proceed !== false) this.evaluate(expr.then, callback);
else if (expr.else) this.evaluate(expr.else, callback);
else callback(false);
});
}
//javascript
Environment.prototype.evaluateIf = function (expr, callback) {
var _this = this;
this.evaluate(expr.condition, function (proceed) {
guard(arguments.callee, arguments, _this);
if (proceed !== false)
_this.evaluate(expr.then, callback);
else if (expr.else)
_this.evaluate(expr.else, callback);
else
callback(false);
});
};
Quello che ho optato per dopo l'assistenza in quanto gli argomenti potrebbero non essere lì per sempre
private evaluateIf(expr: parserModule.IIfExpression, callback: IEnvCallback) {
var fn;
this.evaluate(expr.condition, fn = proceed=> {
guard(fn, [proceed], this);
if (proceed !== false) this.evaluate(expr.then, callback);
else if (expr.else) this.evaluate(expr.else, callback);
else callback(false);
});
}
non è il punto principale di funzioni di direzione solo un modo più succinta di esprimere funzioni anonime, con la giusta 'this' vincolante? Quindi non avrebbero comunque nomi con l'equivalente JS. – GregL
Sembra che dopo tutto non si vogliano le funzioni freccia, ma un'espressione di funzione con nome. –
Nah. In realtà, voglio usare le funzioni della freccia e stanno funzionando bene. Comunque sto implementando un pezzo di codice (seguendo un tutorial) che richiede che io usi la funzione di chiamata come parte di un processo 'guarding'. Voglio sapere come evitare l'uso di arguments.callee evitando allo stesso tempo di dover modificare ogni funzione interessata a una normale funzione javascript. – ritcoder