<input type="button" value="Button 1" id="btn1" />
<input type="button" value="Button 2" id="btn2" />
<input type="button" value="Button 3" id="btn3" onclick="buttonClicked();"/>
<script type="text/javascript">
function buttonClicked(){
var text = (this === window) ? 'window' : this.id;
console.log(text);
}
var button1 = document.getElementById('btn1');
var button2 = document.getElementById('btn2');
button1.onclick = buttonClicked;
button2.onclick = function(){
buttonClicked();
};
</script>
Question:essayer de comprendre 'ce' dans certains codes js
quand cliquez sur Button1 montre: btn1
, cliquez sur button2 et button3, montre: window,
pourquoi ne pas btn2
, btn3
?
Vous devriez lire [sur le ** mot clé ** this] (http://www.quirksmode.org/js/this.html) – doppelgreener
Bien que la page QuirksMode explique très bien, je ne suis pas tout à fait sûr si "copier" est le bon mot. Il ne copie pas la fonction, copie simplement une référence à celui-ci. Le contexte appelant est ce qui définit la référence 'this' pour le contexte d'exécution de la fonction. –
Et vous pouvez facilement vérifier que la fonction n'est pas * copiée * en tant que 'button1.onclick = buttonClicked; console.log (button1.onclick === buttonClicked); 'les fonctions sont des objets et les comparaisons d'égalité entre objets ne retournent true que si les deux références pointent vers le même objet. –