Je pense que cela peut être un doublon de Stricte Violation à l'aide de ce mot-clé et de révéler le motif de module
J'ai ce code:
function gotoPage(s){ if(s<=this.d&&s>0){this.g=s; this.page((s-1)*this.p.size);} } function pageChange(event, sorter) { var dd = event.currentTarget; gotoPage.call(sorter, dd[dd.selectedIndex].value); }
Et JSHINT (JSLINT) est de se plaindre. Il dit "Strict violation." pour la ligne sélectionnée:
Mon utilisation de l'
Function.call()
puis de référencement de l'instance, d'une certaine manière inappropriée?Est-ce considéré comme de mauvais goût?
Réponse
Trop de publicités?JSHint dit "Possible stricte violation" parce que vous êtes à l'aide de this
à l'intérieur de quelque chose qui, aussi loin qu'il peut dire, n'est pas une méthode.
Non le mode strict, appelant gotoPage(5)
lier this
à l'objet global (window
dans le navigateur). En mode strict, this
serait undefined
, et vous obtenez en difficulté.
Sans doute, vous voulez dire d'appeler cette fonction avec une borne this
contexte, par exemple, gotoPage.bind(myObj)(5)
ou gotoPage.call(myObj, 5)
. Si oui, vous pouvez ignorer JSHint, que vous ne serez pas générer d'erreur. Mais, c'est vous dire que votre code n'est pas clair pour toute personne lisant, parce que l'utilisation d' this
à l'intérieur de quelque chose qui n'est évidemment pas une méthode est assez déroutant. Il serait préférable de simplement passer l'objet en tant que paramètre:
function gotoPage(sorter, s) {
if (s <= sorter.d && s > 0) {
sorter.g = s;
sorter.page((s - 1) * sorter.p.size);
}
}
function pageChange(event, sorter) {
var dd = event.currentTarget;
gotoPage(sorter, dd[dd.selectedIndex].value);
}