Подтвердить что ты не робот

Jshint ожидает новый префикс для функций

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

Ответ 1

Если параметр newcap включен, JSHint ожидает, что функции, начинающиеся с заглавной буквы, будут конструкторами и поэтому будут вызваны с ключевым словом new.

Решение: отключите эту опцию или переименуйте свои функции.

В документации :

Эта опция требует, чтобы вы использовали имена функций конструктора. Заглавные функции, предназначенные для использования с оператором new, - это просто соглашение, которое помогает программистам визуально различать конструкторские функции от других типов функций, чтобы помочь выявить ошибки при использовании this.

Не делать этого не нарушит ваш код в каких-либо браузерах или средах, но будет немного сложнее вычислить код - если функция должна была использоваться с или без new. И это важно, потому что, когда функция, предназначенная для использования с new, используется без нее, this будет указывать на глобальный объект вместо нового объекта.

function MyConstructor() {
    console.log(this);
}

new MyConstructor(); // -> [MyConstructor]
MyConstructor();     // -> [DOMWindow]

Для более глубокого понимания того, как работает this, прочитайте Понимание функции JavaScript Invocation и "this" от Yehuda Katz.

Ответ 2

Феликс Клинг уже дал вам правильный ответ. Для полноты я бы заметил, что newcap по умолчанию - true (документация не указала его, но вы можете прочитать его в исходный код). Это означает, что удаление параметра newcap: true в параметрах JSHint не приведет к отключению предупреждения: вместо этого вам нужно явно установить newcap: false.