Знак доллара $

String.prototype.repeat = function(n) { 
    return new Array(++n).join(this); 
};

String.prototype.pad = function(requiredLength, paddingStr, paddingType) {    
    var n = requiredLength - this.length; 

    if (n) {
        paddingType = paddingType ? paddingType.toLowerCase() : '';
        paddingStr = paddingStr || ' ';
        paddingStr = paddingStr.repeat( Math.ceil(n / paddingStr.length) ).substr(0, n);

        if (paddingType == 'both') {
            n /= 2;
            return paddingStr.substr( 0, Math.ceil(n) ) + this + paddingStr.substr( 0, Math.floor(n) );
        }   

        if (paddingType == 'left') {
            return paddingStr + this;
        }

        return this + paddingStr;
    } 

    return this; 
}; 

// синтаксис аналогичен printf
// 'Привет, %s!'.format('мир') -> "Привет, мир!"
// '%.1s.%.1s. %s'.format('Иван', 'Иванович', 'Иванов') -> "И.И. Иванов"
String.prototype.format = function() {
    var i = 0, 
        params = arguments;

    return this.replace(/%(?:%|(?:(|[+-]+)(|0|'.+?)([1-9]\d*)?(?:\.([1-9]\d*))?)?(s|d|f))/g, function(match, sign, padding, width, precision, type) {
        if (match == '%%') { 
            return '%'; 
        }

        var v = params[i++];

        if (type == 'd') { 
            v = Math.round(v); 
        }
        else if (type == 'f') {
            v = v.toFixed(precision ? precision : 6);
        }

        if (/\+/.test(sign) && v > 0) {
            v = '+' + v;
        }

        v += '';

        if (type != 'f' && precision) {
            v = v.substr(0, precision);
        }

        if (width) {
            v = v.pad(width, padding == '' ? ' ' : padding[0] == "'" ? padding.substr(1) : padding, /-/.test(sign) ? 'right' : 'left'); 
        }

        return v;
    });
};

// this.name = 'Вася';
// console.log( 'Привет, ${name}!'.template(this) );
// "Привет, Вася!"
String.prototype.template = function(context) {
    return this.replace(/\$\{(.*?)\}/g, function(match, name) {
        return context[name];
    });
};
41
задан Lightness Races with Monica 27 December 2011 в 15:29
поделиться

8 ответов

Я видел, как это делалось в обоих направлениях. Все, что вы делаете, - это создаете переменную с именем «$ selector», поэтому они функционально эквивалентны. Самое приятное в этом то, что это позволяет легко выделить их как объекты jQuery.

32
ответ дан 27 November 2019 в 00:13
поделиться

$ - это просто имя - имена в JavaScript могут содержать знаки доллара и могут состоять только из знака доллара.

Использование знака доллара в своем имени не имеет отношения к jQuery - в знаке доллара нет ничего особенного, кроме того, что jQuery определяет функцию с именем $ .

47
ответ дан 27 November 2019 в 00:13
поделиться

Знак наличных - это просто псевдоним для функции jQuery. Начало имени переменной с $ не влияет на эту переменную.

Однако обычно, особенно при разработке плагинов jQuery, использовать переменные, уже заключенные в jQuery, с денежным знаком, поэтому вы знаете, что можете вызывать методы jQuery, не имея чтобы обернуть их.

21
ответ дан 27 November 2019 в 00:13
поделиться

Мне нравится добавлять к именам всех моих объектов jQuery префикс $ , чтобы я знал, что это на самом деле объект jQuery, а не ссылка на DOM.

Это хорошее соглашение об именах.

9
ответ дан 27 November 2019 в 00:13
поделиться

RichieHindle верен. Чтобы расширить:

Переменные Javascript допускают использование символа «$». Так, например, у вас может быть следующее:

var $i = 1;
var i = 1;

И i, и $ i имеют одинаковое значение, и оба являются вполне допустимыми именами переменных.

jQuery присваивает себе (объекту jQuery) '$', потому что традиционно это то, что фреймворки Javascript сделали для селекторов. «$» Не имеет внутреннего значения, кроме того, что дает ему jQuery.

11
ответ дан 27 November 2019 в 00:13
поделиться

Ага.

jQuery всегда возвращает объект jQuery. Это то, что позволяет создавать цепочки.

Вы уже определили переменную, чтобы получить обратно объект jQuery, поэтому $ не требуется

2
ответ дан 27 November 2019 в 00:13
поделиться

«$» - это функция в jQuery. Таким образом, когда вы вызываете $ (selector), вы фактически вызываете функцию $ с селектором в качестве аргумента.

Как правило, не используйте "$" как часть имени переменной для javascript. Вы только запутаете себя.

-2
ответ дан 27 November 2019 в 00:13
поделиться

Я не верю, что вам нужно добавлять селектор jQuery к объектам jQuery (поскольку он уже является частью объекта). Селектор не добавляем и проблем не возникало.

-1
ответ дан 27 November 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: