js
fengshaopu
这个作者很懒,什么都没留下…
展开
-
同步、异步,微任务、宏任务
先执行同步的,在执行异步的异步:微任务:propmise().then() ,async,awiat宏任务 :setTiimeout setInterval ajax DOM事件写出console.log的输出顺序console.log(100); //异步先执行 1setTimeout(()=>{ //4 console.log(200);})setTimeout(()=>{原创 2021-06-11 08:02:28 · 182 阅读 · 0 评论 -
事件委托(事件代理)(传统的,vue , e.target.dataset.index)
概念事件委托,又名事件代理。事件委托就是利用事件冒泡,就是把子元素的事件都绑定到父元素上。如果子元素阻止了事件冒泡,那么委托也就没法实现了。好处:提高性能,减少了事件绑定,从而减少内存占用事件委托原理:事件冒泡机制**<ul id="myLinks"> <li id="goSomewhere">Go somewhere</li> <li id="doSomething">Do something</li> <li id=原创 2021-05-30 21:23:35 · 792 阅读 · 0 评论 -
闭包 是什么
面试题:当一个函数用到另一个函数的变量的时候,这个变量跟这个函数就是闭包的环境,主要通过原型链、跟函数嵌套优点:变量不会被污染缺点:容易造成内存泄漏原创 2021-05-28 18:34:02 · 58 阅读 · 0 评论 -
var let const 区别
一、目录1.是否存在变量提升?2.是否存在暂时性死区?3.是否允许重复声明变量?4.是否存在块级作用域?5. 是否能修改声明的变量?二.是否存在变量提升?var 有变量提升 ———— let const没有·提升到了这 var f·console.log(f) //undefinedvar f = 1 ;**·没有变量提升·**console.log(g) //ReferenceError: g is not definedlet g = 2;**·没有变量提升·**co转载 2021-05-28 16:58:49 · 71 阅读 · 0 评论 -
作用域、作用域链、自由变量、变量提升
一、作用域对象 类型global/window 全局作用域function 函数作用域(局部作用域){}块状作用域this动态作用域全局作用域 :任何地方都可以访问,反复使用函数作用域(局部作用域):仅在函数内部可访问,不能反复使用例子:var a=10; function fun() { var a=100; a++; console.log(a); } fun();//101 console.log(a);//10二、作用域链自由变量的向原创 2021-05-27 19:39:14 · 96 阅读 · 0 评论 -
this指向问题、new的过程
this指向的问题1.全局this指向window2.函数内部this指向谁调用就指向谁4.箭头函数 this指向父级上下文的意思5.函数可以用call、apply、bind去修改this6.箭头函数不可以修改7.class指向创建出来的类8.new this指向new出来的实例this指向的问题可以看我上篇博客:https://blog.csdn.net/fengshaopu/article/details/117301481?spm=1001.2014.3001.5501new的过原创 2021-05-27 19:08:19 · 113 阅读 · 0 评论 -
call/apply/bind的区别
一、总结1.call跟apply跟bind都可以修改this指向2.call 用于后面是一个一个数据的情况下3.apply用于后面是数组的情况下4.bind后面要多加一步()二、call跟apply跟bind都可以修改this指向function f(){ console.log(this.name)}var v={ name:'我是'}f.call(v) //callf.apply(v) //applyf.bind(v) //bind 三、call 用原创 2021-05-27 11:07:40 · 66 阅读 · 0 评论 -
js this指向
一、this指向分为:1.全局 —————————— 全局的this指向window2.函数内部 —————————— 谁调用this指向谁3.call() —————————— 可以修改this指向4.箭头函数 —————————— 父级的上下文二、全局的this指向全局的this指向window//第一种情况 全局里面原创 2021-05-26 19:09:54 · 90 阅读 · 4 评论 -
数组常用方法 (es4,es5,es6)
push 尾部添加 let rga = new RegExp(this.value, “gi”); g 是全局的 i是不区分大小写pop 尾部删除unshift 头部添加shift 头部删除replace 字符串替换String str=“Hello World”;System.out.println( str.replace( ‘H’,‘W’ ) ); 结果是 Wello Worldreverse 数组反转splice(index,数量),可以做删除sli原创 2021-05-25 21:20:48 · 139 阅读 · 0 评论 -
arguments
1.arguments 是伪数组2.arguments不能使用数组 方法3.arguments有索引值 有length4.如果想用 数组方法的话 用 借用 :var argsArr = Array.prototype.slice.call(arguments);原创 2021-05-25 20:02:14 · 81 阅读 · 0 评论 -
数据类型判断
typeof 对于基本数据类型判断是没有问题的,但是遇到引用数据类型(如:Array)是不起作用instanceof 判断 new 关键字创建的引用数据类型不考虑 null 和 undefined(这两个比较特殊)以对象字面量创建的基本数据类型constructor(康斯储可特) 似乎完全可以应对基本数据类型和引用数据类型 但如果声明了一个构造函数,并且把他的原型指向了 Array 的原型,所以这种情况下,constructor 也显得力不从心Object.prototype..原创 2021-05-24 19:09:46 · 121 阅读 · 0 评论 -
js数据类型
一、基本的数据类型1.number (数字)2.string (字符串)3.boolean (布尔值)4.undefind (undefind)5.null (空)6.Symbol(es6新增独一无二的值)7.和 BigInt(es10新增)8.object (对象)引用数据类型: Object。包含Object、Array、 function、Date、RegExp。...原创 2021-05-24 19:02:03 · 66 阅读 · 0 评论 -
深拷贝(什么是深拷贝,为什么要进行深拷贝,如何进行深拷贝(至少写三种方法,手写深拷贝))
加粗样式一、什么是深拷贝、浅拷贝深拷贝和浅拷贝是针对复杂数据类型来说的,浅拷贝只拷贝一层,而深拷贝是层层拷贝。1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象只是对原对象的一个引用2.深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”二、为什么要进行深拷贝我们想要的结果是两个变量(初始值相同)互不影响。所以就要使用到拷贝(分为深浅两种)三、深拷贝(三中方法)1.使用递归的方式实现深拷贝//使用递归的方式实现数组、对原创 2021-05-23 19:06:36 · 3740 阅读 · 0 评论