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 正则表达式

https://regexr.com/

  1. 修饰符 /.../igm; eg: i, g, m
  2. 组匹配 ()
  3. 搜索模式 eg:var pattern = /quick|brown|lazy/ig;
  4. 字符集 [], 匹配里面的任意字符 `eg: [0-9a-z]+
  5. 量词 +, 匹配 1个 或 多个; * 匹配 0个 或 多个
  6. ., 匹配除了换行符 line break 之外的任意字符
  7. 懒惰 lazy ?, 使问号之前的量词+ or *变懒惰,匹配尽可能少的字符 /(.*?)/
  8. (?:) 非捕获组
  9. {} 重复次数
$& 指代匹配的子字符串。
$` 指代匹配结果前面的文本。
$' 指代匹配结果后面的文本。
$n 指代匹配成功的第n组内容,n是从1开始的自然数。
$$ 指代美元符号$。
'hello world'.replace(/(\w+)\s(\w+)/, '$2 $1')
// "world hello"

'abc'.replace('b', '[$`-$&-$\']')
// "a[a-b-c]c"

4. 正则式中的一些术语

  1. literal characters 字面量字符
  2. metacharacters 元字符
  3. modifier 修饰符
  4. Positive look-ahead 先行断言 (?=)
  5. x(?!y)称为先行否定断言(Negative look-ahead

5. 一些术语

  1. 对象的成员
  2. 数组的成员
  3. 白名单
  4. 黑名单
  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. 所有事件可以分成四个大类。

  1. mouse:”mousedown”, “mouseup”, “click”, “dblclick”, “mousemove”, “mouseover”, “mouseout”, “mousewheel”
  2. key:”keydown”, “keyup”, “keypress”, “textInput”
  3. touch:”touchstart”, “touchmove”, “touchend”, “touchcancel”
  4. control:”resize”, “scroll”, “zoom”, “focus”, “blur”, “select”, “change”, “submit”, “reset”

link: http://javascript.ruanyifeng.com/stdlib/regexp.html