Friday, May 17, 2024
 Popular · Latest · Hot · Upcoming
184
rated 0 times [  187] [ 3]  / answers: 1 / hits: 51870  / 13 Years ago, fri, october 7, 2011, 12:00:00

I think this may be a duplicate of Strict Violation using this keyword and revealing module pattern




I have this 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);
}


And JSHINT (JSLINT) is complaining. It says Strict violation. for the highlighted line:



enter



Is my use of Function.call() and then referencing the instance, somehow inappropriate?



Is this considered to be bad style?


More From » jslint

 Answers
30

JSHint says Possible strict violation because you are using this inside something that, as far as it can tell, is not a method.



In non-strict mode, calling gotoPage(5) would bind this to the global object (window in the browser). In strict mode, this would be undefined, and you would get in trouble.



Presumably, you mean to call this function with a bound this context, e.g. gotoPage.bind(myObj)(5) or gotoPage.call(myObj, 5). If so, you can ignore JSHint, as you will not generate any errors. But, it is telling you that your code is unclear to anyone reading it, because using this inside of something that is not obviously a method is quite confusing. It would be better to simply pass the object as a parameter:



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);
}

[#89740] Thursday, October 6, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
anniejulietteb

Total Points: 740
Total Questions: 125
Total Answers: 97

Location: Benin
Member since Fri, Mar 24, 2023
1 Year ago
;