CSiginIn
, CSignUp
, CTryIt
, CBlocks
are all functions declared as such
function CSignIn(){//stuff here}
yet JSHint says that I am missing the 'new' 'prefix'. What can I do to fix this?
They are just functions inside the module pattern. Also, it is asking me to remove semicolons I had placed at the end of the function which I have done.
var Control = ( function ()
{
/**
*Publik
*/
var publik = function ( page )
{
// page 1 initialization
if( page == 1 )
{
CSignIn();
CSignUp();
CTryIt();
CBlocks();
}
Function Example...
function CTryIt()
{
// pull elements
var tryit_button = document.getElementById( 'tryit_button' );
// initialize access to Model
tryit_button.addEventListener( "click", function( )
{
new AjaxRequest().invoke( 'ajax_type=ControlTryIt',
function( server_response_text )
{
new AjaxResponse( server_response_text, 'page_change' );
} );
}, false );
}
If
newcap
is enabled, JSHint expects functions starting with a capital letter to be constructors and therefore to be called with thenew
keyword.Solution: Either disable this option or rename your functions.
From the documentation:
For a more in-depth understanding on how
this
works, read Understanding JavaScript Function Invocation and "this" by Yehuda Katz.Felix Kling already gave you the correct answer. For completeness, I would note that
newcap
defaults totrue
(The documentation doesn't state it, but you can read it in the source code). This means that deleting the settingnewcap: true
in the JSHint options will not disable the warning: instead, you need to explicitly setnewcap: false
.