const getCookie = (name) => document.cookie.match(`[;\s+]?${name}=([^;]*)`)?.pop();

// 比如cookie如下: a=b; c=d
// 使用
getCookie('c') // d

其中match是字符串的原型方法。

str.match(regexp)

如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp

以上,所以完全不必写一个正则,因为正则拼字符串还要使用new RegExp构造方法,然而match内部。已经隐式的判断了。

string原型上search方法同样的实现原理,因为后者指返回索引,类似indexOf,所以性能会好一些。

有点跑题,不妨跑的再远一些。。。

其实string身上的match方法实际是调用了正则原型RegExp[Symbol.match]方法。

const str = 'foo';
str.match(/foo/); // ['foo']
RegExp.prototype[Symbol.match].call(/foo/, str); //['foo']

JS中获取cookie的最简单方式
标签: