小知识点记录

1. await  暂停时会执行async函数以外的代码  返回数据后 解析器会移动到await的下一行继续执行

2. Object.assgin({},target) => 这种方式第一层是深拷贝,第二层是浅拷贝,
3. JSON.parse(JSON.stringify(obj)) => 这种方式只能对属性不是function的有用
采用扩展运算符var a = {...obj}; // 第一层深拷贝,第二层之后都是浅拷贝
同Object.assgin,二者区别参考:object.assign和扩展运算符的区别(扩展运算符对于一维的一般不会相互改变,object.assign要 Object.assign({}, obj) 这样使用)

深拷贝的实现:
a:JSON.parse(JSON.stringify(obj)) => 这种方式只能对属性不是function的有用
b:Object.assgin({},target) => 这种方式第一层是深拷贝,第二层是浅拷贝
c:jquery的JQ.extend
d:采用递归来进行拷贝
e:采用扩展运算符var a = {...obj}; => 同b
-----------------------------------
浅拷贝
直接赋值;
任何操作都会影响原数组;
let obj2 = obj1;
Object.assign;
拷贝属性值,假如属性值是一个对象的引用,那么也会指向那个引用;
let obj2 = Object.assign({},obj1);
Array.prototype.concat();
合并多个数组;
拷贝规则同Object.assign;
let arr2 = arr1.concat(...arr);
Array.prototype.slice();
提取数组;
参数(可选):startIndex,endIndex(与索引值一致);
拷贝规则同Object.assign;
let arr2 = arr1.slice(start,end);
扩展运算符(...);
拷贝规则同Object.assign;
let obj2 = {obj1} or [...obj1];
lodash(_.clone());
拷贝规则同Object.assign;
let obj2 = _.clone(obj1);
-------------------------------------
深拷贝
JSON.parse(JSON.stringify());
不能拷贝函数;
let obj2=JSON.parse(JSON.stringify(obj1));
递归赋值;
function deepClone(obj){
    let objClone = Array.isArray(obj)?[]:{};
    if(obj && typeof obj==="object"){
        for(key in obj){
            //判断是否为自身属性
            if(obj.hasOwnProperty(key)){
                //判断ojb子元素是否为对象,如果是,递归复制
                if(obj[key]&&typeof obj[key] ==="object"){
                    objClone[key] = deepClone(obj[key]);
                }else{
                    //如果不是,简单复制
                    objClone[key] = obj[key];
                }
            }
        }
    }
    return objClone;
}
lodash(_.cloneDeep());
let obj2 = _.cloneDeep(obj1);
----------------------------------
createObjectURL  能将图片blob格式转成base64格式


// 2. blob 转 file 类型
let hiBlob = new Blob([`<h1>Hi gauseen!<h1>`], { type: 'text/html' })
let hiFile = new File([ hiBlob ], 'fileName', { type: 'text/html' })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值