
javascript
很A
bigname22
很帅,很酷...
展开
-
优雅手撕bind函数
为什么面试官总爱让实现一个bind函数?他想知道些什么?一个小小的bind里面到底暗藏多少知识?今天来刨析一下实现一个bind要懂多少相关知识点,也方便我们将零碎的知识点串联起来。首先我们要明白bind函数的作用:返回一个能够改变this指向的函数。要点:改变this指向返回函数那么实现bind的思路大致就想出来了:创建一个待返回的函数,函数内部利用call/apply改变指向,call/apply的参数从arguments中获取。实现代码如下: Function.prototype原创 2020-11-01 23:55:19 · 312 阅读 · 0 评论 -
优雅实现深度遍历DFS与广度遍历BFS
深度遍历DFS&广度遍历BFS定义深度遍历DFS:深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止。广度遍历BFS:广度遍历是最简便的图的搜索算法之一,以广度优先,横向逐层地遍历,直到没有下一层为止。实现方式数据源:搜索其中的name值 const data = [ { name: 'a', chi...原创 2020-10-19 18:22:31 · 205 阅读 · 0 评论 -
优雅实现防抖与节流函数
防抖&节流定义防抖:防抖是指在一定的时间内再次触发此事件,会清空上次的事件重新开始,如果制定的时间内没有再次触发,那么这个事件才会执行。节流:节流是指在一定的时间同一事件只会触发一次,只有超过了这个时间才会再次触发。使用场景搜索框按钮监听滚动频繁使用鼠标总的来说:任何东西被频繁的调用都有可能需要防抖或者节流去优化实现方式防抖 function showLog() { console.log('show'); } /...原创 2020-10-18 19:30:57 · 249 阅读 · 2 评论 -
终极版~深拷贝
这次让面试官非常满意:手撕深拷贝-------------人工分割线-------------浅拷贝这里不做介绍了,深拷贝的实现要点,除了一定要深!还要能兼容各种类型,如函数,正则、Date等等。其实日常业务开发中,Json.parse(Json.stringfy(obj))已经能够解决90%左右的克隆需求。还有Object.assign() Object.create()都能满足一定的克隆需求。但上班拧螺丝,面试造航母的精神不容小觑!本着专研精神去看待怎么才能写个牛逼、各种场合都能...原创 2020-10-17 02:55:12 · 226 阅读 · 0 评论 -
汇总遍历对象的六种方式及其区别~值得收藏
遍历对象属性的方式先定义数据源 let person = { name: 'tony', } let human = { eat: 'food', } // 设置prototype为human Object.setPrototypeOf(person, human); // person增加属性:不可枚举 age Object.defineProperty(person, "age", {原创 2020-10-14 19:56:44 · 769 阅读 · 0 评论 -
你不知道的闭包原理【三个栗子彻底理解】
你不知道的闭包原理想要理解闭包之前,就必须理解函数的创建过程、活动变量AO、作用域链。我曾写过相关的文章网上相关对闭包的定义:MDN:函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起构成闭包(closure)。也就是说,闭包可以让你从内部函数访问外部函数作用域。在 JavaScript 中,每当函数被创建,就会在函数生成时生成闭包。你不知道的JavaScript:是指有权访问另外一个函数作用域中的变量的函数。创建闭包的常见方式就是在一个函数内部...原创 2020-10-13 03:52:47 · 200 阅读 · 0 评论 -
javascript-七个栗子深入理解this指向
在先了解this之前有必要了解一下-函数的生命周期在调用一个函数的时候是先经历函数的创建然后再到执行的过程。而this的指向是再创建阶段就已经完成了。关于创建及执行的阶段做的事情看下面图图:执行上下文生命周期描述创建上下文分别创建变量对象,确认作用域链,以及确定this指向执行创建阶段之后,则执行代码,这个时候会完成变量赋值,函数引用,及其他代码在创建函数的时候就确定this及作用域这些操作【对应上js是一门词法分析这个知识点是相互呼应的】,意思就是this在创建阶原创 2020-10-10 04:10:10 · 239 阅读 · 0 评论 -
JavaScript继承方式及原理
继上篇文章深入剖析prototype、constructor、_proto_原理后,接下来整理、理解JS中的继承就水到渠成,一气呵成!话不多说,上个文章中说过,原型链最主要就是为了解决JS在面向对象中继承功能的实现。所以在js继承中第一种要介绍的方式当然是从原型链继承。过程中会插入我对该种继承产生过的一些疑惑并作出解答,希望这对你的理解能带来帮助原型链继承: function Father () { this.name = 'father'; } .原创 2020-08-04 02:35:03 · 375 阅读 · 0 评论 -
深入剖析prototype、constructor、_proto_原理
JavaScript中比较难理解的点之【prototype、_ _ proto _ _、constructor】,通常不明白这三者关系的同学都有个毛病:继承也不懂!深刻理解这个知识点不仅可以对学习继承有帮助,而且对new关键字、this、性能方面都会有更好的认识。最关键是,几乎作为面试必考题目之前,没啥理由不好好看完~友情提示:文章相对枯燥且绕,一定要耐心。这篇文章会尽量按照我这段时间所产生过的疑惑,以懵逼当事人之一的角度去一一解开谜底。在这个复杂三角恋的关系中,我认为最让人容易混淆的有如下几个点:原创 2020-07-29 18:28:33 · 586 阅读 · 0 评论 -
前端进阶必读:《JavaScript核心技术开发解密》核心提炼三
前言最近读勒基本关于前端的数据《JavaScript核心技术开发解密》,《webpack从入门到进阶》…这几本书帮助到我更好的理解JS、webpack在前端技术领域中的作用。以前可能更多的是知道怎么使用,但从未从更深的层面去思考他们是如何运作,为什么会产生这种特性,等等…这本书先从《JavaScript核心技术开发解密》开始讲解,分为两篇讲完,读完本篇你能学到:《核心提炼三》前言九、ES6与模块化9.1 常用语法知识9.2 模板字符串9.3 解析结构9.4 展开运算符9.5 Promise9.6 事件原创 2020-07-21 16:50:09 · 402 阅读 · 0 评论 -
前端进阶必读:《JavaScript核心技术开发解密》核心提炼二
前言最近读勒基本关于前端的数据《JavaScript核心技术开发解密》,《webpack从入门到进阶》…这几本书帮助到我更好的理解JS、webpack在前端技术领域中的作用。以前可能更多的是知道怎么使用,但从未从更深的层面去思考他们是如何运作,为什么会产生这种特性,等等…这本书先从《JavaScript核心技术开发解密》开始讲解,分为两篇讲完,读完本篇你能学到:五、作用域与作用域链在JS中,作用域是用来规定变量/函数可访问的规则5.1作用域5.1.1全局作用域在非严格模式,未定义的变量/函数会原创 2020-07-21 16:49:34 · 515 阅读 · 0 评论 -
前端进阶必读:《JavaScript核心技术开发解密》核心提炼一
前言最近读勒基本关于前端的数据《JavaScript核心技术开发解密》,《webpack从入门到进阶》…这几本书帮助到我更好的理解JS、webpack在前端技术领域中的作用。以前可能更多的是知道怎么使用,但从未从更深的层面去思考他们是如何运作,为什么会产生这种特性,等等…这本书先从《JavaScript核心技术开发解密》开始讲解,读完这本书你能学到:一、三种基础数据结构栈(stack)堆(heap)队列(queue)不要小看这些数据结构,他们不同的结构以及规则产生了我们平常所知道的一些特性:原创 2020-07-21 09:05:35 · 990 阅读 · 0 评论 -
JavaScript高性能编写技巧
前言这段时间把《高性能JavaScript》书籍读完,受益良多。在读书的过程把重点精简地提炼并结合自己的经验记录下来。也希望看完这篇文章能够给对JavaScript多了解一点点。目录加载和执行数据存取DOM编程算法和流程控制快速响应的用户界面Ajax编程实战构建并部署高性能的JavaScript应用1. 加载和执行了解: 当浏览器在执行JavaScript代码时,是不能...原创 2019-10-15 22:48:11 · 335 阅读 · 0 评论