需要解释这个Javascript字符串大写原型吗

需要解释这个Javascript字符串大写原型吗,javascript,string,replace,Javascript,String,Replace,使用以下代码位: CSS: JS: HTML: 我惊讶地发现,即使输入文本字段在屏幕上正确显示,它的值也没有大写,所以我寻找了一种方法。上面的脚本是从一个没有提供问答功能的网站上收集的,虽然它工作得很好,但我不清楚它是如何工作的,我也找不到解释——我没有访问Javascript手册的权限 我不明白的一点是,它的功能得到了加强。使用alert我发现,对于每个大写的单词,m和p2参数都包含要大写的字母,p1似乎是null 有人能告诉我这些m、p1、p2参数来自何处以及它们是如何设置的吗?匿名替换

使用以下代码位:

CSS:

JS:

HTML:


我惊讶地发现,即使输入文本字段在屏幕上正确显示,它的值也没有大写,所以我寻找了一种方法。上面的脚本是从一个没有提供问答功能的网站上收集的,虽然它工作得很好,但我不清楚它是如何工作的,我也找不到解释——我没有访问Javascript手册的权限

我不明白的一点是,它的功能得到了加强。使用
alert
我发现,对于每个大写的单词,
m
p2
参数都包含要大写的字母,
p1
似乎是
null


有人能告诉我这些
m
p1
p2
参数来自何处以及它们是如何设置的吗?

匿名替换函数中使用的参数来自正则表达式
/(^ |\s)([a-z])/g中的匹配元素。匹配的元素用括号括起来,
p1
是行首或空格,
p2
是小写字母,
m
只是整个匹配的正则表达式

该函数将合并匹配的元素,并将大写字母设置为行开头或空格后的第一个字母


输入值不会被更改,因为
大写
仅用于显示,但在javascript代码中没有对该函数的调用。

中对此进行了解释。感谢您简洁的回答-它告诉了我需要知道的一切。现在我已经阅读了Felix Kling指出的MDN中的项目,我现在认为我理解了@sinsedrix的答案的含义-对于regexp a p1、p2、。。。参数被创建。对吗?抱歉,现在我已经重新阅读了MDN项目,我看到我上面的评论是正确的,尽管可能写得不好。非常感谢你的帮助。
input   {background-color:black; text-transform:capitalize;}
String.prototype.capitalize = function() { 
    return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ 
        return p1+p2.toUpperCase(); 
     }); 
};
<input type="text" id="if1" onfocus="enterInp(this.id)" onblur="exitInp(this.id)" />