Decorative image frame

base64转file对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* base64 转 File 对象
* @param url base64
* @param fileName 文件名
*/
const base64ToFile = (url: string, fileName?: string) => {
let arr = url.split(','),
mime = arr[0].match(/:(.*?);/)![1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);

while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], fileName!, { type: mime });
};

搞定 JS 深浅拷贝

浅拷贝与深拷贝的区别

  • 浅拷贝是创建一个新的对象,如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址。如果这个内存地址的值发生了变化,就会影响到其他的对象。
  • 深拷贝是将一个对象从内存中完整拷贝一份出来,从内存中开辟一个新的区域放新对象,并且修改新对象不会影响原对象。
阅读全文...

JS 在浏览器端的运行机制

先来看几个问题

1、JS为什么是单线程?

JS的单线程,与他的用途有关。作为浏览器脚本语言,Js的主要用途就是与用户互动,以及操作DOM。这决定了它只能是单线程。

试想一下,假设现在有process1、process2两个线程,process1在某个DOM节点上添加了内容,process2删除了这个节点,那这时浏览器应该以哪个线程为准呢?

所以,为了避免复杂性,JS从诞生起就是单线程

阅读全文...

图片转base64

1
2
3
4
5
6
7
8
9
// 图片转base64
var reader = new FileReader()
// 传图片的 file 对象
// 可通过 e.target.files 拿到
reader.readAsDataURL(file)
reader.onload = function () {
// this. result 就是转换后的 base64
console.log(this.result)
}