CSiginIn
、CSignUp
、CTryIt
、CBlocks
はすべて、そのように宣言された関数です
function CSignIn(){//stuff here}
それでもJSHintは、「新しい」「プレフィックス」がないと言っています。これを修正するにはどうすればよいですか?
これらはモジュールパターン内の関数です。また、私が実行した関数の最後に配置したセミコロンを削除するように求めています。
var Control = ( function ()
{
/**
*Publik
*/
var publik = function ( page )
{
// page 1 initialization
if( page == 1 )
{
CSignIn();
CSignUp();
CTryIt();
CBlocks();
}
関数の例...
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 );
}
newcap
が有効になっている場合、JSHintは大文字で始まる関数がコンストラクターであり、したがってnew
キーワードで呼び出されることを想定しています。
解決策:このオプションを無効にするか、関数の名前を変更してください。
ドキュメント から:
このオプションでは、コンストラクター関数の名前を大文字にする必要があります。
new
演算子で使用することを目的とした関数の大文字化は、this
を使用する際にプログラマーがコンストラクター関数を他のタイプの関数と視覚的に区別して間違いを見つけるのに役立つ規則にすぎません。そうしないと、ブラウザや環境でコードが壊れることはありませんが、関数を
new
の有無にかかわらず使用することが想定されていた場合、コードを読むことによって理解するのが少し難しくなります。new
で使用することを意図していた関数をそれなしで使用すると、this
は新しいオブジェクトではなくグローバルオブジェクトを指すため、これは重要です。function MyConstructor() { console.log(this); } new MyConstructor(); // -> [MyConstructor] MyConstructor(); // -> [DOMWindow]
this
の動作の詳細については、Yehuda Katzによる JavaScript関数の呼び出しと「これ」について を参照してください。
フェリックスクリングはすでにあなたに正しい答えを与えました。完全を期すために、newcap
はデフォルトでtrue
になっていることに注意します(ドキュメントにはそれが記載されていませんが、 ソースコード で読むことができます)。つまり、JSHintオプションの設定newcap: true
を削除しても警告は無効になりません。代わりに、明示的にnewcap: false
を設定する必要があります。