- 正则表达式的用法 str.replace(/([A-Z])/g,"_$1")
此用法可以将驼峰转为下划线,即 ‘callType’ => call_Type
// 驼峰转下划线-by 饼干 2021-5-8 13:14:49
export function camelCase2Undeline(str){
return str.replace(/([A-Z])/g,"_$1").toLowerCase();
}
解释:$1 :正则捕获的第一组元素,就是第一个括号括起来的($0 是第零组,捕获的是完全匹配的结果)
在此例子中,匹配的是第一个符合条件的大写字母 T 结果是将 T => _T
就是说 ([A-Z]) 这个正则 捕获到的第一个字符, $1 就引用什么字符
整个正则 就是 把 每一个大写字母前面添加下划线
- this.$set(obj, key, value) 的使用
遇见this.$set() 特别记录一下 由于受JavaScript的限制,vue.js不能监听对象属性的添加和删除,因为在vue组件初始化的过程中,会调用getter和setter方法,所以该属性必须是存在在data中,视图层才会响应该数据的变化
使用$this.set() 可以给对象添加属性,并且视图层会立即响应此数据,与Object.assign(target, sources)方法有同样效果
在Object.assign(target, sources)中只能对一层级的数据进行深拷贝,二层及的数据就是公用地址,无法深拷贝
同理,concat方法与slice也存在这样的情况,他们都不是真正的深拷贝,使用时需要注意
如果想哟啊深拷贝数据,可以使用
- 递归方式复制所有层级属性
- JSON.parse(JSON.stringify(data))
- ES6 扩展运算符
- jQuery.extend()
具体使用方法可以看这里