Нужно объяснение этого Javascript String Capitalize Protoype - PullRequest
0 голосов
/ 14 февраля 2012

Использование следующих битов кода:

CSS:

input   {background-color:black; text-transform:capitalize;}

JS:

String.prototype.capitalize = function() { 
    return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ 
        return p1+p2.toUpperCase(); 
     }); 
};

HTML:

<input type="text" id="if1" onfocus="enterInp(this.id)" onblur="exitInp(this.id)" />

Iбыл удивлен, обнаружив, что значение поля ввода текста не было написано заглавными, хотя оно правильно отображается на экране, поэтому я искал способ сделать это.Сценарий, приведенный выше, был взят с веб-сайта, который не предоставлял возможности для вопросов и ответов, и, хотя он работает нормально, я не совсем понимаю, как он работает, и мне не удалось найти объяснение - у меня нет доступа круководство по Javascript.

Бит, который я не понимаю, - это ободренная функция.Используя alert, я обнаружил, что для каждого заглавного слова параметры m и p2 содержат букву, которая должна быть заглавной, а p1 представляется null.

Может кто-нибудь сказать мнеоткуда берутся эти m, p1, p2 параметры и как они будут установлены?

1 Ответ

1 голос
/ 14 февраля 2012

Параметры, используемые в функции анонимной замены, берутся из соответствующих элементов в регулярном выражении /(^|\s)([a-z])/g. Совпадающие элементы заключены в квадратные скобки, p1 - это начало строки или пробел, p2 - строчная буква, а m - это всего совпадающее регулярное выражение.

Функция объединит сопоставленные элементы и установит заглавные буквы в первую букву после начала строки или пробела.

Входное значение не будет изменено, поскольку capitalize используется только для отображения, но в коде JavaScript нет вызова этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...