031. js 静态方法,split, slice, regexp - cwy007/tips-and-skills GitHub Wiki
1. 静态方法
即定义在对象本身,而不是定义在对象实例的方法
eg:String.fromCharCode()
2. split 分隔
split() split方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组。
'a|b|c'.split('|') // ["a", "b", "c"]
2. slice 取出一部分
link: http://javascript.ruanyifeng.com/stdlib/string.html#
3. js 正则表达式
- 修饰符
/.../igm
; eg: i, g, m - 组匹配
()
- 搜索模式 eg:
var pattern = /quick|brown|lazy/ig;
- 字符集 [], 匹配里面的任意字符 `eg: [0-9a-z]+
- 量词
+
, 匹配 1个 或 多个;*
匹配 0个 或 多个 - 点
.
, 匹配除了换行符 line break 之外的任意字符 - 懒惰 lazy
?
, 使问号之前的量词+
or*
变懒惰,匹配尽可能少的字符/(.*?)/
(?:)
非捕获组{}
重复次数
$& 指代匹配的子字符串。
$` 指代匹配结果前面的文本。
$' 指代匹配结果后面的文本。
$n 指代匹配成功的第n组内容,n是从1开始的自然数。
$$ 指代美元符号$。
'hello world'.replace(/(\w+)\s(\w+)/, '$2 $1')
// "world hello"
'abc'.replace('b', '[$`-$&-$\']')
// "a[a-b-c]c"
4. 正则式中的一些术语
- literal characters 字面量字符
- metacharacters 元字符
- modifier 修饰符
- Positive look-ahead 先行断言
(?=)
- x(?!y)称为先行否定断言(Negative look-ahead
5. 一些术语
- 对象的成员
- 数组的成员
- 白名单
- 黑名单
- 格式字符串(使用了格式占位符)
console.log(' %s + %s = %s', 1, 1, 2)
// 1 + 1 = 2
如果第一个参数是格式字符串(使用了格式占位符),console.log方法将依次用后面的参数替换占位符,然后再进行输出。 link: http://javascript.ruanyifeng.com/stdlib/console.html
6. 递归处理中,每一次处理的对象,都是前一次返回的值。
var o = {a: 1};
function f(key, value) {
if (typeof value === 'object') {
return {b: 2};
}
return value * 2;
}
JSON.stringify(o,f)
// "{"b": 4}"
上面代码中,f函数修改了对象o,接着JSON.stringify方法就递归处理修改后的对象o。
7. 所有事件可以分成四个大类。
- mouse:”mousedown”, “mouseup”, “click”, “dblclick”, “mousemove”, “mouseover”, “mouseout”, “mousewheel”
- key:”keydown”, “keyup”, “keypress”, “textInput”
- touch:”touchstart”, “touchmove”, “touchend”, “touchcancel”
- control:”resize”, “scroll”, “zoom”, “focus”, “blur”, “select”, “change”, “submit”, “reset”