js
文章平均质量分 92
Coder小鹿
前端小白程序员一枚,略略略~
展开
-
ES5/ES6 的继承除了写法以外还有什么区别? 每日一题系列(七)
继承的各种写法class 声明会提升,但不会初始化赋值。Foo 进入暂时性死区,类似于 let、const 声明变量。const bar = new Bar(); // it's okfunction Bar() { this.bar = 42;}const foo = new Foo(); // ReferenceError: Foo is not definedclass Foo { constructor() { this.foo = 42; }}clas原创 2020-09-13 19:06:12 · 365 阅读 · 0 评论 -
请分别用深度优先思想和广度优先思想实现一个拷贝函数? 每日一题系列(六)
前言在前一篇已经介绍过了深度优先和广度优先现在想通过这两个去实现一个深拷贝深拷贝需要注意一些问题:环状数据先了解过什么是环状数据后,再来进行深拷贝的实现环状数据相信大多数人都是第一次听说这个词,其实挺好理解的,先上代码看一看const obj = { foo: { name: 'foo', bar: { name: 'bar' baz: { name: 'baz', aChild: null //待会让它指向obj.原创 2020-09-12 10:19:44 · 1193 阅读 · 0 评论 -
介绍下 Set、Map、WeakSet 和 WeakMap 的区别?每日一题系列(四)
前言Set、Map、WeakSet、WeakMap都是ES6新增的数据结构这里只是说说区别,之后会根据ES6的规范来对其详细的特性和方法等进行讲解区别Set成员唯一、无序且不重复[value, value],键值与键名是一致的(或者说只有键值,没有键名)可以遍历,方法有:add、delete、hasWeakSet成员都是对象成员都是弱引用,可以被垃圾回收机制回收,可以用来保存DOM节点,不容易造成内存泄漏不能遍历,方法有add、delete、hasMap本质上是键值原创 2020-09-10 10:49:23 · 341 阅读 · 1 评论 -
什么是防抖和节流?有什么区别?如何实现? 每日一题系列(三)
前言函数的防抖与节流也是常见面试题其区别在于防抖:任务频繁触发的情况下,只有任务触发的间隔超过指定间隔的时候,任务才会执行节流:指定时间间隔内只会执行一次任务实现的话可以移步防抖与节流总结这是一个挺简单的实现,只要知道思路后,也可以根据应用场景,自己进行一些更改防抖与节流也是前端性能优化中重要的一环,面试基本上都会问到...原创 2020-09-09 09:35:53 · 239 阅读 · 0 评论 -
(!(~+[])+{})[--[~+““][+[]]*[~+[]]+~~!+[]]+({}+[])[[~!+[]]*~+[]] javascript类型转换的彩蛋
前言(!(~+[])+{})[--[~+""][+[]]*[~+[]]+~~!+[]]+({}+[])[[~!+[]]*~+[]]大家可以试着运行一下这串代码是不是输出的"sb"让人眼前一惊肯定都会去想这个变相的骂人是怎么实现的原始式子拆分解这种题目,当然要把他们先按运算符给拆分开来,一步一步分析了首先可以将原始的式子分为式子1 (!(~+[])+{})[–[~+""][+[]]*[~+[]]+~~!+[]]式子2 ({}+[])[[~!+[]]*~+[]]并且式子1和式子2原创 2020-09-08 20:08:37 · 2937 阅读 · 0 评论 -
[‘1‘, ‘2‘, ‘3‘].map(parseInt) what & why ? 每日一题系列(二)
前言[‘1’, ‘2’, ‘3’].map(parseInt),这看上去,好像就是遍历1,2,3然后将他们都进行parseInt,所以脑海中的答案大概可能是1,2,3,但这是错误的,这里面有一个坑,涉及到parseInt的参数以及规范的问题这也是面试题中常见的一道题目接下来让我们搞清楚其运作原理mapmap方法是ES6新增的数组方法,这是MDN上的map语法var new_array = arr.map(function callback(currentValue[, index[, array原创 2020-09-08 10:16:52 · 397 阅读 · 0 评论 -
javascript类型转换(下篇)
前言不多说,这一篇全是题目和解析,直接上题目了,如果不懂得可以看javascript类型转换(上篇)[]+[]首先这两个都是对象类型,所以会执行toPrimitive内部方法,而[[DefaultValue]]的hint值为空,hint值为空相当于hint为number的时候。所以会先执行valueOf,然后根据返回值判断是否执行toString。那么来看看这里的第一个[],执行valueOf后,因为数组的valueOf会返回数组本身,因此这个返回值还不是基本类型值,因此会执行toString,所原创 2020-09-04 19:52:53 · 1175 阅读 · 2 评论 -
javascript类型转换(上篇)
前言JavaScript中有6种数据类型:数字(number)、字符串(string)、布尔值(boolean)、undefined、null、对象(Object)。其中对象类型包括:数组(Array)、函数(Function)、还有两个特殊的对象:正则(RegExp)和日期(Date)。其中简单数据类型为:number、string、boolean、undefined、null引用数据类型为:object但是Javascript是一门弱类型的语言,它在声明时只有一种类型,只有在运行期间才能确定当前原创 2020-09-04 17:43:41 · 1394 阅读 · 2 评论