JSHint говорит: «Возможно строгое нарушение», потому что вы используете this
внутри чего-то, что, насколько он может судить, не является методом.
В нестрогом режиме вызов gotoPage(5)
привяжет this
к глобальному объекту (window
в браузере). В строгом режиме this
будет undefined
, и вы попадете в беду.
Предположительно, вы имеете в виду вызывать эту функцию со связанным контекстом this
, например, gotoPage.bind(myObj)(5)
или gotoPage.call(myObj, 5)
. Если это так, вы можете игнорировать JSHint, так как вы не будете генерировать никаких ошибок. Но он говорит вам, что ваш код неясен для любого, кто его читает, потому что использование this
внутри чего-то, что не является явно методом, довольно запутанно. Было бы лучше просто передать объект в качестве параметра:
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);
}