JavaScript高级
仅做个人学习所用,侵删
七彩冰淇淋与藕汤
这个作者很懒,什么都没留下…
展开
-
如何实现大文件上传----分块
大文件怎样实现快速上传?大文件快速上传的方案,相信你也有过了解,其实无非就是将 文件变小,也就是通过 压缩文件资源 或者 文件资源分块 后再上传。本文只介绍资源分块上传的方式,并且会通过 前端(vue3 + vite) 和 服务端(nodejs + koa2) 交互的方式,实现大文件分块上传的简单功能......转载 2022-06-13 17:01:09 · 2477 阅读 · 1 评论 -
严格模式.
严格模式中的变化严格模式对 Javascript 的语法和行为,都做了一些改变。1. 变量规定① 在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,变量都必须先用var 命令声明,然后再使用。② 严禁删除已经声明变量。例如,delete x; 语法是错误的。2. 严格模式下 this 指向问题① 以前在全局作用域函数中的 this 指向 window 对象。② 严格模式下全局作用域中函数中的 this 是 undefined。③ 以前构造函数时不加转载 2022-04-05 14:46:24 · 55 阅读 · 0 评论 -
可迭代接口的实现
1.next()函数,返回done和value2. [Symbol.iterator]:迭代器工厂函数3.[Symbol.iterator](),打印 arr[[Symbol.iterator]()] 的值如下:class Counter{ constructor(limit){ this.limit=limit } [Symbol.iterator](){ let count=1, limit=this.原创 2022-04-03 16:47:26 · 188 阅读 · 0 评论 -
数组去重方法
1.ES6 Setlet arr=[1,1,2,3,5,3,6,6]arr=[...new Set(arr)]2.两层for循环3.一层for+indexOf/includedslet arr=[1,1,2,3,5,3,6,6]let res=[]for(let it of arr){ if(res.indexOf(it)==-1)res.push(it) //if(!res.includes(it))res.push(it)}4.fliter函数,当前数值的in原创 2022-04-01 19:35:24 · 157 阅读 · 0 评论 -
加载JavaScript脚本方式
1.静态加载:1. <script>... ...</script>直接写入HTML文件2. <script src="xxx.js"></script>2.动态引入1.document.write()<script language="javascript"> document.write("<script src='test.js'><\/script>"); </script>原创 2022-04-01 19:19:36 · 1060 阅读 · 0 评论 -
箭头函数和普通函数的区别
1.箭头函数没有prototype属性2.箭头函数的this指向定义时外层第一个普通函数的this不能直接修改箭头函数的this当箭头函数外层没有普通函数时,它的this在严格和非严格模式都是指向window。3.箭头函数有外层函数时,arguments继承自外层函数的arguments,内部修改没用箭头函数没有外层函数直接使用arguments会报错function foo() { console.log(arguments);/...原创 2022-04-01 19:02:38 · 313 阅读 · 0 评论 -
Math 类的使用
parseInt("数字字符串",基数)、parseFlout()toString(16):如果是数字字符串,则转为16进制返回parseInt("10"); //返回 10parseInt("19",10); //返回 19 (10+9)parseInt("11",2); //返回 3 (2+1)parseInt("17",8); //返回 15 (8+7)parseInt("1f",16); //返回 31 (16+15)parseInt(...原创 2022-03-30 20:53:24 · 234 阅读 · 0 评论 -
ES6新特性:let,解构赋值,模板字面量,箭头函数,reat参数,扩展运算符,symbol,迭代器,promise,Set,Map。新接口:assign()
1.let(经典案例:for循环包延时器)2.解构赋值3.模板字面量`${}`4.箭头函数箭头函数里面的this是静态的,this始终指向函数声明时所在作用域下的this不能构造实例化对象,原创 2021-11-25 20:21:28 · 126 阅读 · 0 评论 -
结合前端讲讲进程和线程
1.进程是具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配的最小单位;线程是程序执行的最小单位,同一进程下的各个线程之间共享程序的内存空间。2.前端常见进程1)browser进程,是浏览器的主进程,该进程只有一个,负责浏览器界面的显示,与用户交互,比如前进后退等2)第三方插件进程,每种类型的插件都对应一个进程,当使用该插件时,才创建进程3)GPU进程,这个进程也只有一个,用于3D绘制等4)渲染进程,每一个tab页面都有一个渲染进程,而且互相之间是不影响的,原创 2022-03-28 22:36:13 · 216 阅读 · 0 评论 -
普通函数和构造函数的区别
在命名规则上,构造函数一般是首字母大写,普通函数遵照小驼峰式命名法。构造函数通过newfn()调用,内部创建并返回这个新对象。this指向这个新对象。(new的执行过程继承的实现、new的实现_七彩冰淇淋与藕汤的博客-CSDN博客)普通函数 直接执行,返回值由return语句决定。this指向函数调用者。构造函数的返回值:默认返回新建的对象。当手动添加返回值后(return语句):1. 返回值是基本数据类型-->真正的返回值还是那个新创建的对象(实例)2. 返回值是复杂数据类型原创 2022-03-28 22:22:38 · 133 阅读 · 0 评论 -
跨域之cors--简单请求、复杂请求
1.简单请求:1、使用下列方法之一:GET、POST、HEAD。2、不得人为设置该集合之外的其他首部字段。该集合为:AcceptAccept-LanguageContent-LanguageContent-Type3、Content-Type 的值仅限于下列三者之一:text/plainmultipart/form-dataapplication/x-www-form-urlencoded4、请求中的任意XMLHttpRequestUpload 对象均原创 2022-03-22 20:20:56 · 1998 阅读 · 0 评论 -
刷题查缺补漏
1.判断 字符/子串 是否在字符串中:indexOf、searcharr="123"console.log(arr.indexOf("23"))//1console.log(arr.search("23"))//12.判断数组中是否包含指定值:indexOf 、includesarr.includes(item)==truearr.indexOf(item)!=-13.返回满足条件的第一个值numbers=[1,2,12,9]let result = numbers.fi原创 2022-03-17 18:36:26 · 185 阅读 · 0 评论 -
变量提升-作用域
1.通过var定义的变量只提升声明,不提升定义(赋值)。function fn(){}声明函数,则声明和定义都被提升2.函数提升的优先级高于变量提升,所有的函数都提升到变量之前3.var才进行便令提升,let和const不提升,提前只用会报“reference error”,称为暂时性死区。这里注意带new和.的面试题如果是new cls.fn(),相当于new (cls.fn())如果是new cls().fn(),相当于(new cls()).fn()...原创 2022-03-17 11:00:10 · 126 阅读 · 0 评论 -
vue-cli到底做了哪些事
1.ES6代码转换成ES5代码2. scss/sass/less/stylus转css3. .vue文件转换成js文件4. 使用 jpg、png,font等资源文件5. 自动添加css各浏览器产商的前缀6. 代码热更新7. 资源预加载8. 每次构建代码清除之前生成的代码9. 定义环境变量10. 区分开发环境打包跟生产环境打包...原创 2022-03-16 19:29:55 · 1089 阅读 · 0 评论 -
js深拷贝、数组扁平化(数组展平)
function deepClone(obj){ let newObj=Array.isArray(obj)?[]:{} if(obj && typeof obj === 'object'){ for(key in obj){ if(obj.hasOwnProperty(key)){ if(obj[key]&& typeof obj[key] === 'object'){ newObj[key]=deepClone(obj[key]) .原创 2022-03-16 11:24:08 · 143 阅读 · 0 评论 -
call、bind、apply的实现
源博客:call、apply、bind 原理实现_林夏天的博客-CSDN博客call:Function.prototype.myCall = function () { if (typeof this !== 'function') { throw new TypeError('error!') } let context = arguments[0] || window //this 参数可以传 null,当为 null 的时候,视为指向 window context原创 2022-03-15 17:07:17 · 567 阅读 · 0 评论 -
继承的实现(es5、es6)以及两者的区别、new的实现
1.ES5function Father(name){ this.name=name}function Son(name,age){ Father.call(this,name) this.age=age}Son.prototype=new Father()Son.prototype.constructor=Son2.ES6class Father{ constructor(name){ this.name=name }}原创 2022-03-15 15:49:13 · 242 阅读 · 0 评论 -
手写jsonp、实现防抖节流
jsonp:<script type="text/javascript"> //添加<script>标签的方法 function addScriptTag(src){ var script = document.createElement('script'); script.setAttribute("type","text/javascript"); script.src = src; document.bo原创 2022-03-14 20:32:37 · 61 阅读 · 0 评论 -
JS--Object、 Set、Map
Set1、创建:可以创建空集合,或者以数组形式传入。数组中每个数据都称为set中的元素var set=new Set([{1:2},3,"4"])2、末尾添加:只能添加一个数据。传入的数组整体被当做一个元素set.add(["a",5])3、末尾删除:可以删除任意一个基本数据类型,对象类型要先定义再添加、再通过这个对象名删除var set=new Set([{1:2},3,"4"])set.delete({1:2})//找不到着这个对象、删除失败set.del..原创 2022-03-14 14:58:58 · 778 阅读 · 0 评论 -
ES6---class
1.类classclass Phone{ constructor(branhd,price){ this.brand=brand this,price=price } callsb(){ console.log("我可以打电话") }}let onePlus=new Phone("onep",999)用类名.xxx定义的属性(Phone.size='5.5')不能通过实例.xxx调用,称此为静态成员。只有定义在原原创 2021-11-27 16:37:14 · 169 阅读 · 0 评论 -
JS高级--正则表达式
在正则表达式语法中,放括号表示字符范围。在方括号中可以包含多个字符,表示匹配其中任意一个字符。如果多个字符的编码顺序是连续的,可以仅指定开头和结尾字符,省略中间字符,仅使用连字符-表示。如果在方括号内添加脱字符^前缀,还可以表示范围之外的字符。例如:[abc]:查找方括号内任意一个字符。 [^abc]:查找不在方括号内的字符。 [0-9]:查找从 0至 9范围内的数字,即查找数字。 [a-z]:查找从小写a到小写z范围内的字符,即查找小写字母。 [A-Z]:查找从大写...原创 2021-11-24 19:08:58 · 683 阅读 · 0 评论 -
JS高级--函数进阶(原型、调用方法、this、bind、严格模式、闭包、垃圾回收、递归深拷贝、匿名函数、回调函数、立即执行函数)
函数定义方式function fn(){}//命名函数var fun=function(){}//匿名函数// new fn=new Funcion("参数1","参数2","函数体"),很少用。//所有函数都是Function的实例对象(函数也是对象)var fn=new Funcion("a","b","console.log(a+b)")console.log(fn instanceof Object)//true函数的调用(6种)t...原创 2021-11-24 09:51:33 · 2677 阅读 · 1 评论 -
ES6中的类和对象
1.类:class,抽象,泛指对象:具体的,有属性和方法,通过类的实例化产生2.创建类和李永刚类创建对象class Star{//类名首字母大写 constructor(uname){ this.uname=uname }//类中不需要逗号分隔 sing(){ //类里面的函数不需要写function关键字 }}var ldh=new Star('刘德华')......原创 2021-11-18 18:58:42 · 207 阅读 · 0 评论