我刚刚浏览了jQuery库的addClass函数代码,因为我需要为我自己的库创建一个与此类似的函数,我遇到了以下代码行:
cur = elem.nodeType === 1 && ( elem.className ?
( " " + elem.className + " " ).replace( rclass, " " ) :
" "
);
我相信这会返回当前节点的类,我理解它的大部分内容,直到我遇到我的威胁,正则表达式rclass
,现在rclass
实际上是/[\t\r\n\f]/g
,现在如果我使用 ONLINE TOOL 来解码此regrex,我得到以下内容:
/[\t\r\n\f]/g
[\t\r\n\f] match a single character present in the list below
\t Tab (ASCII 9)
\r matches a carriage return (ASCII 13)
\n matches a line-feed (newline) character (ASCII 10)
\f matches a form-feed character (ASCII 12)
g modifier: global. All matches (don't return on first match)
我无法完全理解上述内容的真正含义,我理解\t Tab
,究竟是什么line-feed
和form-feed
?
THIS QUESTION 既没有得到答案,也没有得到任何答案令人信服的回答
谢谢。
亚历-Z
答案 0 :(得分:1)
它们基本上只是其他类型的换行空白字符。
对replace()
的调用正在用一个简单的空字符串(" "
)替换类名中的所有选项卡和换行符实例。
如果真的希望了解更多信息,可以read a lot about new lines。
答案 1 :(得分:1)
它们是空格字符。 \n
或line-feed
相当于Enter或Return(\r
和\n
非常相似,with some oddities in linux/osx/windows)。 \f
我不知道它是如何使用的,但我发现它也是一种空白形式。
事实上,我做a small library来复制一些jQuery功能。它没有完成,也没有维护,但那部分确实已经完成了。我这样实现了它:
/**
* .addClass(name)
*
* Add a class to the matched nodes
* Possible polyfill: https://github.com/eligrey/classList.js
* @param String name the class name we want to add
* @return this Umbrella object
*/
u.prototype.addClass = function(name){
// Loop through all the nodes
this.each(function(){
// Allow for several class names like "a b c"
this.classList.add(name.split(" "));
});
return this;
};
答案 2 :(得分:1)
表单提要(\ f)基本上是分页符。它现在还没有被使用,但仍然在一些编辑中使用。
回车符(\ r)和换行符(\ l)是换行符。这些是常见的地方,通常由新行(\ n)捐赠,这是说“当前系统中的新行字符无论如何”。
在UNIX相关系统(例如Linux和OSX)中,只有在Windows使用\ r \ l的地方才使用\ l。旧Mac(OSX之前)使用\ r \ n。
所有这些都是旧的打字术语,已被转移到计算机上。 Windows通过捐赠新行来更精确地复制这一点,因为它们都会向下和跨越页面。