01 2021 档案
摘要:对象类型与原始值类型的不同之处? 原始值类型保存在栈中,值是直接存储在变量访问的位置, 复制原始类型变量的值时,会将值拷贝一份,和原来的值是相互独立的 引用变量的名称储存在栈中,但是把其实际对象储存在堆中,且存在一个指针由变量名指向储存在堆中的实际对象,复制对象类型变量的值时,会将存储在变量中的值拷
阅读全文
摘要:什么是原型,什么是原型链 每一个构造函数都有一个原型对象属性prototype,每一个JavaScript对象在创建的时候就会关联这个对象,这个对象就是原型,包含了很多属性 实例化的对象中的__proto__会指向这个原型对象属性prototype 原型链就是多个对象通过 proto 的方式连接了起
阅读全文
摘要:promise的实现 https://www.cnblogs.com/dark-duck/p/14325604.html 文件的分片上传断点续传,还有通常说的秒传 https://www.cnblogs.com/dark-duck/p/14326058.html 函数柯里化 https://www.
阅读全文
摘要:事件触发的几个阶段 捕获阶段:事件从根节点流向目标节点,途中流经各个DOM节点,在各个节点上触发捕获事件,直到达到目标节点。 目标阶段:事件到达目标节点时,就到了目标阶段,事件在目标节点上被触发 冒泡阶段:事件在目标节点上触发后,不会终止,一层层向上冒,回溯到根节点 为什么通常在冒泡阶段执行事件 兼
阅读全文
摘要:什么是函数柯里化,有什么作用 在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。 主要作用 参数复用 提前返回 – 返回接受余下的参数且返回结果的新函数 延迟执行 – 返回新函数,等待执行。 function add(a, b) { return a +
阅读全文
摘要:async实现 https://www.cnblogs.com/dark-duck/p/14321687.html 理论以及dom相关 https://www.cnblogs.com/dark-duck/p/14321961.html
阅读全文
摘要:考察隐式类型转换,下面if为真的有哪些 if([]) if({}) if([]==false) if({}==false) 第一个为真,[]会被转换成true 第二个为真,[]会被转换成true 在if中单独会被转换成false的情况 数字0 NaN 空字符串 null或undefined 第三个为
阅读全文
摘要:// gen 为generator 实现Async的主要思路 Async返回的是一个promise对象 使用一个step对generator进行遍历 使用一个Promise.resolve()来拿到每个yield的返回值,并且在下一次调用时传入,循环以往直到结束 有错误使用throw方法抛出,在ge
阅读全文
摘要:简述 首先我们知道generator的内部实现采用了一种类似于协程的方法,即在在函数执行的过程之中遇到yield关键字时,就会暂时退出堆栈,但是并不消失,里面的所有变量和对象会冻结在当前状态。等到对它执行next命令时,这个上下文环境又会重新加入调用栈,冻结的变量和对象恢复执行。 同步任务 对于同步
阅读全文
摘要:BFC: 块级格式化上下文(Block Formatting Contexts) BFC是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域 特点 说白了BFC就是一种css盒模型的渲染规则。具有以下规则 BFC它是一个独立的渲染区域,只有Bl
阅读全文
摘要:什么是闭包? 闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁 function sum (){ let i = 0 return funct
阅读全文
摘要:promiseAll实现 https://www.cnblogs.com/dark-duck/p/14305153.html 深拷贝实现 https://www.cnblogs.com/dark-duck/p/14305335.html es5实现继承 https://www.cnblogs.com
阅读全文
摘要:几种常见for循环的区别与不足之处 (for,for of,for in ,foreach) 区别通过作用体现 foreach 作用:用于调用数组的每个元素,并将元素传递给回调函数,回调函数的三个分别是value,index,arr(数组本身) 不足: 不能同时遍历多个集合,在遍历的时候无法修改和删
阅读全文
摘要:继承的含义 父类公有属性和方法为子类公有属性和方法 父类私有属性和方法为子类私有属性和方法 原型链继承 + 构造函数继承 = 组合继承 构造函数继承继承不到父类原型上的属性和方法 原型链继承父类的修改会影响子类的实例 结合二者 function Father(name) { this.name =
阅读全文
摘要:function deepClone(target) { if(typeof target !== "object") return target // 退出条件 if(Array.isArray(target)){ // 判断数组 const res = [] for(const i of tar
阅读全文
摘要:function PromiseAllSettled(promises) { const result = [] let len = promises.length let count = 0 return new Promise((resolve, reject) => { promises.fo
阅读全文
摘要:什么是generator Generator 函数有多种理解角度。语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。 执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可
阅读全文
摘要:Iterator 的作用有三个: 是为各种数据结构,提供一个统一的、简便的访问接 是使得数据结构的成员能够按某种次序排列 是 ES6 创造了一种新的遍历命令for...of循环,Iterator 接口主要供for...of消费 部署方式 原生就具有iterator的数据结构 Array Map Se
阅读全文
摘要:参数默认值 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。 function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello C
阅读全文
摘要:变量声明 var声明的变量会进行变量提升,全局作用于下会被挂载到window上 let/const 不会进行变量提升提升,存在暂时性死区,不能在声明前被使用 const在被声明的时候必须赋初值,const代表变量指向的那个内存地址所保存的数据不得改动,如果声明一个对象,是可以改变对象的属性的 let
阅读全文
摘要:回流与重绘 回流:引起DOM树结构变化,页面布局变化的行为叫回流,且回流一定伴随重绘 包括了但不限于: 盒模型的改变 元素的偏移量属性(scrollTop、scrollLeft等) 定位或者浮动 浏览器窗口尺寸改变 文字改变,字体改变 DOM的增删行为 页面初次渲染 重绘:只是样式的变化,不会引起D
阅读全文
摘要:prototype 每一个函数都有一个prototype属性 函数的prototype指向了一个对象,而这个对象正是调用构造函数时创建的实例的原型 function Person(age) { this.age = age } Person.prototype.name = 'duck' var p
阅读全文
摘要:异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。 分为了以下两种 宏任务 宏任务就是将当前任务放在下一个任务列最顶部 微任务 微任务会将当前任务放入下一个任务列的底部 主要的
阅读全文
摘要:1.防抖与节流 https://www.cnblogs.com/dark-duck/p/14289048.html 2.instanceof实现 https://www.cnblogs.com/dark-duck/p/14289231.html 3.js理论 https://www.cnblogs.
阅读全文
摘要:输入为数字,输出为字符串 使用“,”分割整数部分,小数保留两位 function transfer(str){ let res = str.toFixed(2).toString().split('.') return res[0].split("").reverse().reduce((prev,
阅读全文
摘要:js的异步机制是怎样的? 特点 js是单线程语言(能提高效率。作为浏览器脚本语言,js的主要用途是与用户互动,操作DOM。而这也就决定它只能为单线程,否则会带来很复杂的同步问题),浏览器只分配给js一个主线程,用来执行任务(函数),但一次只能执行一个任务,这些任务形成一个任务队列排队等候执行,但前端
阅读全文
摘要:typeof typeof用法 对于原始值类型除了null(会显示成object,历史遗留问题)外都可以准确判断 对于对象来说,除了函数都会显示 object instanceof instanceof用法 instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof
阅读全文
摘要:防抖 函数防抖(debounce),触发高频事件后 n 秒内函数只会执行一次,如果 n 秒内高频事件再次被触发,则重新计算时间。计时完成再执行 例如:百度搜索框的联想功能 代码实现 // 简单的例子 function debounce(fn,wait){ let timer = null; retu
阅读全文
摘要:首先,要明确一点 POST和GET是HTTP请求的两种方式,都可实现将数据从浏览器向服务器发送带参数的请求。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。 HTTP请求底层协议都是TCP/IP,所以两者没有本质的区别。 POST和GET的区别 HTTP中的幂等和副
阅读全文
摘要:https://www.yuque.com/yayaya-eepzl/fil8b7/oekerw
阅读全文
摘要:Http contentType Etag相关 https://www.cnblogs.com/dark-duck/p/14288228.html CSS position相关 https://www.cnblogs.com/dark-duck/p/14288292.html JS null ins
阅读全文
摘要:position 的属性值: relative,absolute,fixed,static,inherit,sticky static static(没有定位)是position的默认值,元素处于正常的文档流中,会忽略left、top、right、bottom和z-index属性。 relative
阅读全文
摘要:Content-Type 作用 MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。在请求中 ,客户端告诉服务器实际发送的数据类型。 格式 Content-Type:t
阅读全文
摘要:防抖的使用 https://www.cnblogs.com/dark-duck/p/14287600.html 内存泄漏相关 https://www.cnblogs.com/dark-duck/p/14287119.html 面试题 https://www.cnblogs.com/dark-duck
阅读全文
摘要:题目:请求合并:短时间内需要请求多个资源合并成一个请求发送 防抖可以理解为:多次触发事件后,事件处理函数只执行一次 // 首先有一个接口其请求路径为 /path // query有一个id参数支持传一个或者多个id // /path?id=1 // /path?id=1,2,3 // /path?i
阅读全文
摘要:常见的内存泄漏场景 全局变量的意外创建 一个未声明变量的引用会在全局对象中创建一个新的变量。 没有使用var来创建变量 function foo(arg) { bar = "this is a hidden global variable"; } //等价于 function foo(arg) {
阅读全文
摘要:Object.prototype.toString.call 是如何判断变量的类型的 ES3中给出的解释 在toString方法被调用时,会执行下面的操作步骤: 获取this对象的[[Class]]属性的值. 计算出三个字符串"[object ", 第一步的操作结果Result(1), 以及 "]"
阅读全文
摘要:在模拟实现new关键字之前我们应该先了解new关键字的功能及其特点 new 创建并返回了一个新对象,是构造函数的实例 对象的实例的构造函数属性其实是构造函数的原型对象的 constructor 属性 对象实例的 proto 关联到构造函数的原型对象 判断构造函数的返回值 知道了new的作用之后,我们
阅读全文
摘要:apply的实现 apply的特点 只有两个参数 第一个参数是需要指向的对象 使用一个数组来作为该函数的第二个参数 没有传入参数就默认指向window Function.prototype.myApply = function(context){ context = context ? Object
阅读全文
摘要:Proxy 概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访
阅读全文