js判断是对象还是数组 我们通常使用的typeof 方法是无法辨别该变量是对象还是数组类型,因为:let obj = {}let arr = []console.log(typeof obj) //objectconsole.log(typeof arr) //object解决方案:一、使用数组内置方法isArray来判断,但是只能判断变量是否是数组,而对象需要另外判断const a = [1, 2, 3, 4];const b = {"name": "abc"};console.log(Array.isArr
Obejct.getOwnPropertyNames()与Object.keys()区别 Obejct.getOwnPropertyNames()返回一个数组,其中包含作为参数传递的对象自身属性的所有名称,包括不可枚举的属性。 它不考虑继承的属性。Object.keys()返回一个数组,其中包含可枚举属性。
git remote: HTTP Basic: Access denied 报git remote: HTTP Basic: Access denied原因:远程服务端的用户名和密码与当前系统中git保存的用户名和密码有冲突解决方法:1.以管理员身份打开cmd命令行工具2.输入"git config --system --unset credential.helper"命令(重置远程端的用户名和密码)3.关闭命令行工具4.正常克隆项目 git clone …到指定文件夹,克隆时需填写对应远程端的用户名和密码如果出现每次提交/拉取都要再次输入密码解决方案请执行: gi
vuedraggable彼此独立 vue.draggable group 拖拽分组多组之间相互拖拽,可以实现不同数组之间相互拖拽。比如group都为itxst的组之间可以相互拖动,本文例子中A列和B列可以相互拖动,但是无法拖到C列。<template> <div> <!--使用draggable组件--><div class="itxst"> <span>A、B列可以相互拖动,无法拖到C列</span><div class="col">
Vue组件动态(异步)传值 父组件:<template> <div> <input type="text" v-model="inpMessage"> <button @click="handleClick">点击传给子组件</button> <children :message="clickData" /> //message为子组件props接收的值,clickData为父组件要传的值 </div></t
js判断一个字符在字符串中出现的次数 通过分割获取长度原理var s = 'www.jb51.net';var n = (s.split('.')).length-1;alert(n); //弹出2通过正则实现function patch(re,s){ re=eval("/"+re+"/ig") return s.match(re).length;}var s = 'tools.jb51.net';alert(patch('t',s)); //弹出2...
js限制字数 function textLength(str){ let a = 0 let limit = 200 //不能超出200个中文字符 if(str){ for(let i =0;i<str.length;i++){ if(str[i].charCodeAt()>0 && str[i].charCodeAt()< limitLength){ a+=0.5 }else{ a+=1 } } if(a>2000){ c
vue单向数据流 vue单向数据流的理解?父组件向子元素传值,子组件无法直接修改父元素传过来的数据,即子组件无法直接修改props里面的值为什么要使用单向数据流?父组件传来的值可能会不断发生变化,例如:父组件传了一个8,子组件直接修改为5,父组件又将它改为6,这样会影响子组件的使用,所以在子组件中直接用 v-model 绑定父组件传过来的数据是不合理的如何解决:(1)在子组件 data 中创建一个变量获取 props 中的值,再改变这个 data 中的值。(2)子组件使用 $emit 发出一个事件,让父组件接收去
setTimeout不是异步 众所周知,js跟Java(可多线程)不一样,js是单线程,即只有一个主线程,后面的代码只能等前面的执行完才能执行。为什么js不设置多线程呢?JavaScript作为浏览器的脚本语言 最主要的用途就是与用户进行交互 这决定了它只能是单线程 否则就会带来很复杂的同步问题如: 假设JavaScript同时有两个线程 一个线程在删除一个元素 另一个线程又在这个元素上添加内容 那么这个时候浏览器该如何处理呢?因为不能确定在同时执行这两段代码时 删除元素一定在添加内容之后 如在之前就会报错。关于异步问题什
js数组深拷贝 很多文章里面提到concat和slice可以实现深拷贝,这其实是错误的。例如:const arr = [{name: 'wens'},{age: '26'}];当数组里的值是引用类型时,还是会出现问题,所以这两个方法只是浅拷贝。什么是深拷贝:深拷贝就是增加一个指针(栈内存)申请一个新的堆内存, 并让这个指针指向这个堆内存. 当我们需要复制源对象而又不能修改源对象的时候, 深拷贝就是你想要的.常见的深拷贝方法:1、JSON.parse(JSON.stringify(obj)),2、jQuery
前端利用Blob实现文件导出 Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取。Blob 是一个构造函数,创建一个 Blob 的操作如下:/** 下载excel文件流 * @params data [Object] 文件流 * type [String] 数据的 MIME 类型 */ new Blob([data], {type})代码实现:// 以axios请求为例axios({ method: 'POST', url: xxx,// 这里
width100%和auto的区别 width: auto子元素(包括content+padding+border+margin)撑满整个父元素的content区域。子元素有margin、border、padding时,会减去子元素content区域相对应的width值父元素的content = 子元素(content + padding + border + margin )width: 100%强制将子元素的content区域 撑满 父元素的content区域子元素有margin、border、padding时,不改变子元素c