So come utilizzare i metodi per modificare il contesto di una chiamata funzione/metodo: applica, associa, chiama. La mia domanda è questa, c'è un modo per verificare se una funzione/metodo ha già avuto il suo contesto impostato?Controllo contesto metodo/metodo JavaScript
// given
var beta;
function alpha() {
return this;
}
function isContextSet (fn) {
/* check for context binding on fn */
}
beta = alpha.bind("hello");
isContextSet(alpha); // returns false
isContextSet(beta); // returns true
Penso di conoscere la risposta a questa già, ma ho pensato di chiedere in ogni caso, se non altro per ragioni diverse: 1. confermare la mia ipotesi, o 2. imparare qualcosa. Sono sicuro di non essere il primo a porre questa domanda, ma non ho avuto alcuna idea su come trovare effettivamente una risposta poiché tutto ciò che ottengo sono le risposte a come usare: .apply(), .call(), o. bind().
Forse questo aiuta: [A quale oggetto è associata la funzione javascript (qual è il suo "questo")?] (Http://stackoverflow.com/q/14307264/218196). –
_ "ha già avuto il suo contesto impostato" _ Cosa intendi con "già"? '.apply()', '.call()' e '.bind()' non impostano permanentemente 'this' per ogni volta che la funzione viene chiamata (notando che' .bind() 'restituisce una funzione _new_ che in modo permanente ha uno specifico 'this', ma in realtà non cambia la funzione _original_). Ogni modo possibile per chiamare una funzione imposta 'this' a _qualcosa_ - è solo in alcuni modi farlo implicitamente, alcuni lo fanno esplicitamente ... – nnnnnn
Ho aggiunto del codice per mostrare quello che cerco di ottenere. Capisco come funzionano i tre metodi, e so come controllare il contesto di una funzione/metodo all'interno del corpo dell'invocazione. Come controlli il contesto dall'esterno dell'invocazione, come ho mostrato sopra? Non riesco a pensare a un modo per farlo affatto in JS. – kalisjoshua