JSHint "Possible strict violation." when using `bind`

javascript, jshint

Solution

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.

Problem

Consider this simple code: ``` "use strict"; var obj = { f: function() { this.prop = 'value'; g.bind( this )(); } }; function g() { console.log( this.prop ); } ``` If I try to validate this code, jshint gives me the error `Possible strict violation.` where I call `console.log( this.prop );`. This is because `this` is undefined in strict mode in a function. But I'm binding this function before calling it, so `this` is the correct object. I'm using this "design pattern" to avoid cluttering the main object. Passing the properties in the parameters will also clutter the function, so I refuse to do this. Besides, this is exactly what `bind` is for. Is there a way for JSHint to let me do this?

Original source