JS手写源码系列
文章平均质量分 85
wincheshe
秋天,黄叶坠地,凉风有信。
展开
-
JavaScript—— 八种 高频的继承方案(寄生组合继承,ES6类继承)
JavaScript八种常用的继承方案文章目录JavaScript八种常用的继承方案1、原型链继承2、借用构造函数继承3、组合继承4、原型式继承5、寄生式继承6、寄生组合式继承7、混入方式继承多个对象8、ES6类继承extends在常用七种继承方案的基础之上增加了ES6的类继承,所以现在变成八种啦。1、原型链继承构造函数、原型和实例之间的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个原型对象的指针。继承的本质就是复制,即重写原型对象,代之以一个新类型的实原创 2022-03-31 16:52:13 · 220 阅读 · 0 评论 -
面试问能否手写 Promise 内置 API ?async,await 实现原理?手写一个 async,await 的实现
Promise内置API原理及实现(含async,await)文章目录Promise内置API原理及实现(含async,await)1、Promise.all2、Promise.race3、Promise.allSettled4、Promise.any5、Promise.finallyAsync、await 的实现1、Promise.allpromise.all接收一个Promise数组,数组中如有非Promise项,则此项当做成功如果所有Promise都成功,则返回成功结果数组如果有一个Pr原创 2022-03-26 16:38:19 · 587 阅读 · 0 评论 -
JavaScript 面试高频手写系列,手写对象方法,call,apply,及new关键字原理浅析实现
面试高频——常考JS对象方法原理浅析实现文章目录面试高频——常考JS对象方法原理浅析实现1、call 方法2、apply方法3、new 关键字实现对象方法1、entries2、fromEntries3、keys4、values5、instanceOf6、is1、call 方法call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。备注:该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法原创 2022-03-24 23:20:11 · 841 阅读 · 0 评论 -
10个面试高频JavaScript手写知识点,附带详细注解
文章目录10个面试高频手写JS源码1、树结构转DOM树2、DOM树转树结构3、setTimeout 实现 setInterval4、setInterval 实现 setTimout5、a == 1 && a == 2 && a == 36、AJAX原生实现7、instance of 关键字8、JSON.parse9、LRU缓存10、new 关键字实现10个面试高频手写JS源码1、树结构转DOM树树结构如下:let obj = { tag: 'DIV',原创 2022-03-23 16:47:02 · 1333 阅读 · 0 评论 -
JavaScript进阶手写系列,手写13个数组方法的原理实现
文章目录JavaScript进阶手写系列,手写数组方法的原理实现1、forEach2、map3、filter4、every5、some6、reduce7、findIndex8、find9、fill10、includes11、join12、flat13、spliceJavaScript进阶手写系列,手写数组方法的原理实现1、forEach参数代表含义item:遍历项index:遍历项的索引arr:数组本身// forEach Array.prototype.myForEach = func原创 2022-03-22 16:55:10 · 2297 阅读 · 2 评论 -
面试让写一个“bind”函数,详解五层bind函数进阶写法,带你写出一个让面试官满意的 “bind” 函数
文章目录手写bind函数第一层 - 绑定在原型上的方法第二层 - 改变this的指向第三层 - 支持柯里化第四层 - 考虑 new 的调用第五层 - 保留函数原型总结最终版bind函数手写bind函数面试经常问到,能不能实现一个bind函数当时立马写了一个无脑的bindfunction bind(fn, obj, ...arr) { return fn.apply(obj, arr)}但是这种bind函数,一看就问题重重函数柯里化怎么用?new 情况怎么办?原型对象有考虑嘛?要原创 2022-03-14 17:40:24 · 1333 阅读 · 0 评论 -
javascript(JS) --- 浅拷贝和深拷贝 --- 带你深入手写一个深拷贝函数
浅拷贝与深拷贝浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址 ,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象。赋值和深/浅拷贝的区别这三者的区别如下,不过比较的前提都是针对引用类型:当我们把一个对象赋值给一个新的变量时,赋的其实是该对象的在栈中的地址,而不是堆中的数据。原创 2022-02-25 19:51:18 · 309 阅读 · 0 评论 -
面试问 Promise 不会?超级详细的手写Promise原理,带你一步一步写出一个自己的 Promise
文章目录Promise 原理 及其 实现一、实现resolve和reject1、resolve与reject2. 状态不可变3. throw二、实现 then1. 实现then2. 定时器情况3. 链式调用4. 微任务三、最后总结Promise 原理 及其 实现首先要实现 Promise 就要让我们了解它具体功能let p1 = new Promise((resolve)=>{ resolve(2)})console.log(p1);let p2 = new Promise((原创 2022-03-12 17:23:15 · 1416 阅读 · 0 评论