JSHint "Possible strict violation." when using `bind`
It is extremely hard to detect this case without running the code. You can use option validthis
to suppress this warning:
"use strict";var obj = { f: function() { this.prop = 'value'; g.bind( this )(); }};function g() { /*jshint validthis:true */ console.log( this.prop );}
It is to be noted that jshint comments are function scoped. So the comment will work for the function g
and its inner functions, not just the next line.
You can also achieve the same effect if you modify your code to the following to avoid using this
all together.
"use strict";var obj = { f: function() { this.prop = 'value'; g.bind( null, this )(); }};function g(self) { console.log( self.prop );}
Here's a simpler solution that doesn't require any change of pattern or specific markup for jshint:
"use strict";var obj = { f: function() { this.prop = 'value'; G.bind( this )(); }};function G() { console.log( this.prop );}
jshint assumes that you're following the convention that functions starting with an uppercase letter are classes which will be instantiated and always having this
available.