摘要:proxy与defineproperty区别 1.defineproperty是属性劫持,而proxy针对是对象代理 2.defineproperty需要循环遍历对象,消化性能,而proxy不用(仅针对vue情况下多对象复杂情况,正常情况下defineproperty性能比proxy好) 3.def
阅读全文
摘要:// 柯里化是把一个多参数函数转化成一个嵌套的一元函数的过程 function currying (fn) { let _args = [], max = fn.length let closure = function (...args) { // 先把参数加进去 _args.push(...ar
阅读全文
摘要:Map Map是一种用于存储键值对的集合,并且能够记住键的原始插入顺序。 其中键和值可以是任意类型的数据。 let myMap = new Map() myMap.set('name', 'wendZzoo') myMap.set('age', 18) myMap.get('name') myMap
阅读全文
摘要:Blob/File Blob 对象表示一个不可变、原始数据的类文件对象。 const aBlob = new Blob( array, options ); File 对象是特殊类型的 Blob,且可以用在任意的 Blob 类型的 context 中。 Blob() 构造函数返回一个新的 Blob
阅读全文
摘要:commonJS(用于服务端) 1.加载方式是同步方式(因为commonJS是从服务端的模块化来的) 2.若模块过大,对于客户端来说,需要通过网络来读取(没那么快),造成白屏时间过长 (对于服务端来说,因为放在本地的,读取时间就是硬盘读取时间,很快) 3.运行时加载 var math = requi
阅读全文
摘要:在取深层对象的时候,往往会因为后端,字段变化,而没有及时通知前端而报错,导致代码卡住 就要多写很多个if判断是否为空 方法:可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。 ?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(nul
阅读全文
摘要:1.虚拟dom dom就是html文件里内容,一个页面由多个dom组成 <ul class="lists"> <li class="item">li1</li> <li class="item">li2</li> </ul> 而对应的虚拟dom是 tag: 'ul', attrs: { classN
阅读全文
摘要:在实际开发中,碰到参数不同,接口相同,需要发送多个请求拿到数据后统一做处理的情况 async login() { const datas = ["小明", "小红", "小李"]; // 循环体 const promise = datas.map(i => { const url = "http:/
阅读全文
摘要:一般来说,url方式下载文件用window.location.href即可。 但是有多个,循环下载的时候,如: var files = []; files.push('mysite.com/file1.txt'); files.push('mysite.com/file2.txt'); files.
阅读全文
摘要:输入数据: let arr = [ {id: 1, name: '部门1', pid: 0}, {id: 2, name: '部门2', pid: 1}, {id: 3, name: '部门3', pid: 1}, {id: 4, name: '部门4', pid: 3}, {id: 5, name
阅读全文
摘要:var a, b, rest; [a, b] = [10, 20]; console.log(a); // 10 console.log(b); // 20 [a, b, ...rest] = [10, 20, 30, 40, 50]; console.log(a); // 10 console.l
阅读全文
摘要:1.原型链通过子代的原型去new 祖先的构造函数。去继承。 优点: 无 缺点: 创建子类实例时,不能向父类的构造函数中传递参数 父类中所有引用类型的属性会被所有子类实例共享,也就说一个子类实例修改了父类中的某个引用类型的属性时,其他子类实例也会受到影响 例子: a.pototype=new b();
阅读全文
摘要:了解闭包(函数的函数)的肯定知道,输出的是10个10,但是你要具体解释呢? function test() { var arr=[]; for(var i=0;i<10;i++){ arr[i]=function () { console.log(i); } } return arr; } var
阅读全文
摘要:var num=(1,2); console.log(num); // 2 var fn=( function test1() { return '1'; }, function test2() { return '2'; } )() console.log(typeof(fn)); // stri
阅读全文
摘要:目的:自动执行,执行完之后立即释放; 立即执行函数 --> 初始化函数 可以起到隔离变量的作用 写法(两种写法,效果一样): 1.(function() { })(); 2.(function() { }()) 传参: (function(a,b) { console.log(a); // 1 co
阅读全文
摘要:scope 1.函数创建时,生成的一个js内部隐式属性; 2.函数存储作用域链的容器; AO/GO AO:函数的执行期上下文 GO:全局的执行期上下文 函数执行完成后,AO是要销毁的;AO是一个即使存储容器。 function a(){ function b(){ function c(){} c(
阅读全文
摘要:forEach Array.prototype.myforEach = function (fn) { var arr = this, length = arr.length, newThis = arguments[1] || global; for (var index = 0; index <
阅读全文
摘要:ES3的数组方法 join(); 目的:将数组转化为字符串. 参数:无or可传一个参数(传超过1个的参数,默认取第一个参数), 参数为字符或字符串,参数将在数组的每个元素的间隔插入。PS: 参数无的时候,数组元素间隔为 ','. 是否改变原数组: 不改变原数组, 返回一个新的字符串. 逆向操作(字符
阅读全文
摘要:1.new的实现 a.能够访问构造函数的属性 b.能访问函数函数的原型的属性 function Person(name) { this.name = name } Person.prototype.eat = function () { console.log('Eatting') } functi
阅读全文
摘要:1.函数声明 function print(msg){ console.log(msg); }print(1); 被声明的函数不会直接执行。 它们被“保存供稍后使用”,将在稍后执行,当它们被调用时。 2.函数表达式 var x = function (a, b) {return a * b}; va
阅读全文