08 2021 档案
摘要:1.类型 事件冒泡、事件捕获 2.一些概念 事件流:当一个HTML元素产生一个事件时,该事件会在元素结点与根结点之间的路径传播,路径所经过的结点都会收到该事件,这个传播过程可称为DOM事件流事件流阶段:捕获阶段-目标阶段-冒泡阶段事件:js与html的交互事件对象:记录事件发生的相关信息,事件发生时
阅读全文
摘要:1.完全隐藏 display:none<div hidden></div> 2.视觉隐藏 position和margin移除可视区size为0visibility:hiddentransformz-indexopacityclip-path 3.读屏软件不可读 aria-hidden
阅读全文
摘要:1.执行上下文 分类:{ 全局执行上下文 函数执行上下文 eval函数执行上下文} 执行栈:{ 执行栈就是“调用栈”,是一种LIFO(先进先出)的数据结构域 用于存储代码运行的执行上下文 当引擎在执行脚本时,先创建全局执行上下文压入栈 当引擎调用一个函数时,会为该函数创建执行上下文压入栈顶部 引擎会
阅读全文
摘要:1.跨域 相关名词:同源、.... 2.方案-jsonp /* * 实现jsonp */ // jsonp源码 function jsonp({url,params,callback}){ return new Promise((resolve,reject) => { const script =
阅读全文
摘要:1.Promise.all // 实现Promise.all Promise.all = function(promises){ return new Promise((resolve,reject) => { if(promises.length 0){ resolve([]) }else{ le
阅读全文
摘要:1.概念 能够读取其它函数作用域里变量的函数 2.应用 // 2.1累加器 function hd(){ let n = 0 return ()=>{ console.log(++n) } } const sum = hd() sum() sum() // 2.2类 function Hd(){ t
阅读全文
摘要:1.防抖 控制高频函数执行的次数,n秒内执行一次,当n秒内再次触法,则重新计算 应用: 窗口resize scroll(窗口停止滚动触发操作) 表单验证 提交 输入框查询 let count = 0 const doSome = debounce(doSomething,3000) containe
阅读全文
摘要:1.面向对象是一种编程思想 js本身是基于面向对象编程的 js内置了很多类,比如Promise,我们可以通过new Promise() 来创建一个实例处理异步编程 js的一些框架也是基于面向对象的,比如react、vue、jquery,都是通过创建实例进行操作的 js封装的一些插件也是基于面向对象的
阅读全文
摘要:1.原始值转 console.log(Number(null)) // 0console.log(Number(undefined)) // NaNfalsey(虚值): false 0 '' undefined null 除了虚值都是真值![] // false!{} // false 2.对象转
阅读全文
摘要:1.函数柯理化 大函数返回小函数 思想:利用闭包的机制(保存),将一些内容提前存储和处理,在某个阶段之后拿来用即可 2.应用 2.1 预处理内容返回一个代理函数 /* * bind预先处理内容 * @params: * func:要执行的函数 * context:要改变的this指向 * args:
阅读全文
摘要:1.语法 func.call(_this,arg1,arg2) func.apply(_this,[arg1,arg2]) func.bind(_this,arg1,arg2)() 2.call、apply、bind实现 实现原理: 都是Function.prototype上的方法 第一个参数没传,
阅读全文
摘要:1.浅拷贝 浅拷贝:for...in 三点运算符 Object.assign() Array.prototype.slice() Array.prototype.concat()等 2.深拷贝 2.1.JSON.parse(JSON.stringify(obj)) 问题: 不能考本function
阅读全文
摘要:1.语言内部的方法,与对象关系不大,放到Reflect上 let obj = {color:'red'} Reflect.preventExtensions(obj) // Object.preventExtensions(obj) obj.num = 100 console.log(obj) 2.
阅读全文
摘要:1.语法 let proxy = new Proxy(target,handler) let star = { name:"尼古拉斯凯奇", age:40, job:"actor", phone:"18900012345" } let proxy = new Proxy(star,{ get(tar
阅读全文
摘要:1.对象字面变量 2.对象解构,...运算符 3.name属性 4.特性方法(get、set定义是我方法获取) let descriptor = Object.getOwnPropertyDescriptor(obj,'num')console.log(descriptor.get.name)con
阅读全文
摘要:1.类方法 Array.from() 将类数组转数组Array.of() 创建数组 // Array.from() const divs = document.getElementsByTagName('div') Array.from(divs).forEach(v => { console.lo
阅读全文
摘要:1.es7 1.1.绑定作用域 context::fn 等价于 fn.bind(context) const divs = document.getElementsByClassName('div') Array.prototype.forEach.bind(divs,function (...ar
阅读全文
摘要:1.默认参数 默认参数导致函数在执行时,先执行参数体,再执行函数体 2.箭头函数 无法使用arguments,可通过获取剩余参数的语法代替不能做构造函数作用域是定义时的作用域,箭头函数不受严格模式影响,如果要修改其作用域,将其放到普通函数里箭头函数不能做generator,内部不能使用yeild关键
阅读全文
摘要:1.数组-拆分 const arr =[1,2,3,4,5,6,7] const [a,b,...c] = arr console.log(a,b,c) 2.数组-合并 const a = [1,2,3],b = [4,5,6] const c = [...a,...b] console.log(c
阅读全文
摘要:1.数组解构 const [a,b,[c,d],e] = [1,2,[3,4],5] 2.元素解构 console.log(...document.getElementsByTagName('div')) 3.实现迭代器接口的数据-解构 const obj = { *[Symbol.iterator
阅读全文
摘要:1.具名组 let reg = /(?<year>\d{4})\/(?<month>\d{1,2})\/(?<date>\d{1,2})/ const res = reg.exec('2020/3/23') console.log(res) 2.引用 let str = '10/10/10' let
阅读全文
摘要:1.原始值检测 (1)string、number、boolean、undefined、symbol检测使用typeof (2)null检测使用 或!== 2.引用值检测 (1)Date、Error、RegExp等内置js类型和自定义类型用instanceof (2)Function检测:myFun
阅读全文