记录自己不知道的前端知识点
1.响应式数组:
响应式:push,pop,shift(删除数组第一个元素),unshift,
不响应:arr[0] = 4, 不是响应式 。 解决办法:1)this.$forceUpdate() ,2)Vue.set(obj, index, value), 3)splice替换
2.函数的可变参数:
fun(...data) {........} . this.fun(55, 44, 88) . 可以无限传参,在函数中形成一个数组。
3.this.$forceUpdate()
可以解决数据不响应问题。
5.在关闭页面时弹出确认提示窗口onbeforeunload (原生js方法)
window.onbeforeunload = function(event){
return '您可能有数据没有保存';
};
6.window.open和window.opener
window.open方法会返回一个窗口对象,使用这个对象可以向子窗口发送消息,而子窗口可以通过window.opener向父窗口发送消息,
7.window的父子页面message跨文档通信(低保的添加按钮,是在点击添加按钮的时候触发此事件,详情页点击保存的时候调postMessage事件)
父子通信子向父postMessage的时候,源可以写为‘*’,父向子postMessage的时候,源需要写成子的源,(也就是子页面的协议+主机号+端口)
在HTML5中新增了postMessage方法,postMessage可以实现跨文档消息传输(Cross Document Messaging)
父页面:
var OnMessage = function (e) {
alert(e.data);
}
if (window.addEventListener) { // all browsers except IE before version 9
window.addEventListener("message", OnMessage, false);
} else {
if (window.attachEvent) { // IE before version 9
window.attachEvent("onmessage", OnMessage);
}
}
子页面:
window.parent.postMessage("hello","*");
8.覆盖整个窗口的element的loading事件
如果完整引入了 Element,那么 Vue.prototype 上会有一个全局方法 $loading,它的调用方式为:this.$loading(options),同样会返回一个 Loading 实例。
const loading = this.$loading({
lock: true,
background: 'rgba(255, 255, 255, 0.5)'
});
9.$router.resolve()作用
$router.resolve(./../../).href 获取到一个完整的路径,把zhjz也获取到
10.js的对象在函数内添加新property,
在函数外也可以获取到该property。
11.valueof 把转换为原始值,
就有了原始值的特性,用intanseof 检测会返回false,intanceod用来检测引用值的,typeof用来检测原始值,除null,null会反复obj
12.num.toFixed()。返回小数,
如10.toFixed(2) 就返回10.00 如果num本身是小数就10.787878 就是10.79 (四舍五入)
13.字符串翻转,
Str.split('').reverse().join('')
14.字符串检查是否含有某个字符的方法,
startsWith(),includes(),endsWith()
var str = 'acdsw' str.startsWith('acd') // true str.startsWith('sw') // false 只检查字符串的开头,可传第二个参数索引表示从第几个开始检查开头有无这个字符 str.startsWith('acd', 3)
str.endsWith('acd') // false str.endsWith('sw') // true // 只检查字符串的末尾 可传第二个参数索引表示从第几个开始向后全部检查
str.includes('acd') // true str.includes('sw') // true //检查整个字符串 可传第二个参数所以标识以索引几位最后的结尾,查结尾是否有这个字符