jshint预计,功能新的“前缀”(jshint expects the new 'pref

2019-06-24 14:40发布

CSiginInCSignUpCTryItCBlocks全部功能,宣布为

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

Answer 1:

如果newcap启用,JSHint预计功能开始用大写字母是构造函数,因此与被称为new关键字。

解决方案 :禁用此选项或重命名功能。

从文档 :

这个选项需要你利用的构造函数的名称。 善用这是为了与使用功能的new运营商只是一个约定使用时帮助程序员从视觉上分辨构造函数与其他类型的功能,帮助发现错误this

不这样做不会打破任何浏览器或环境的代码,但是这将是一个有点难以弄清楚,通过阅读代码,如果本来的功能使用或不使用new 。 而且,因为当这是旨在与使用的功能,这是重要的new不使用它, this将指向全局对象,而不是一个新的对象。

 function MyConstructor() { console.log(this); } new MyConstructor(); // -> [MyConstructor] MyConstructor(); // -> [DOMWindow] 

有关如何更深入的了解this工作的,阅读理解JavaScript函数调用和“本”的耶胡达·卡茨。



Answer 2:

费利克斯·克林已经给你正确的答案。 为了完整起见,我要指出, newcap默认为true (文档没有说明,但你可以在阅读它的源代码 )。 这意味着删除设置newcap: true的JSHint选项不会禁用警告:相反,你需要明确设置newcap: false



文章来源: jshint expects the new 'prefix' for functions