JavaScript
文章平均质量分 86
Hello Simon
这个作者很懒,什么都没留下…
展开
-
数组扁平化
文章目录数组扁平化方法适用于二维数组的扁平化Array.prototype.flat(depth)reduce() 归并map() 递归循环 + 遍历...扩展运算符toString() 和 split()join() 和 split()数组扁平化数组扁平化是指将多维数组降维成一维数组方式有很多,下面列举出几种常用的方法方法适用于二维数组的扁平化const arr = [1,2,[2,1],[3,4,5],[1,1,2,3,4,5,6]];const newArr = [].concat.原创 2020-07-29 20:48:56 · 482 阅读 · 0 评论 -
console详解
文章目录consoleconsole.log()console.dir()console.error()console.info()console.debug()console.assert()console.trace()console.time()console.group()console.table()console.warn()consoleconsole通常是用于在浏览器控制台打印信息,是用于调试的强大工具之一。console对象可以从任何全局对象中访问,它被定义为Window.conso原创 2020-05-30 11:46:04 · 11227 阅读 · 0 评论 -
JS之this指针面试题
再说this在之前的文章中讲了this指针的绑定方式—JavaScript之this指针,这次通过几道题来巩固一下前面所学的内容this指针绑定分为默认绑定、隐式绑定、显式绑定(call、apply、bind)、new绑定。并且其优先级为 new绑定 > 显式绑定(bind) > 隐式绑定 > 默认绑定默认绑定默认绑定就是函数调用时的this默认绑定window,箭头函数除外,函数可以访问window下的全局变量。但是也有例外情况:在非严格模式下,函数中的this是指向原创 2020-05-16 11:01:07 · 717 阅读 · 0 评论 -
JS之柯里化
文章目录什么是柯里化柯里化的实现高级柯里化什么是柯里化柯里化(Currying)是一种关于函数的高阶技术,它不仅被用于JavaScript,也能用于其他语言柯里化是一种函数 转换,让函数具有完整功能的同时,也能接受可选的参数。它能将一个函数从f(a,b,c)转换为f(a)(b)( c )柯里化是一种将函数进行转换的技术,而不会去调用函数柯里化的实现实现柯里化//构造柯里化函数function curry(fun){ return function(a){ re原创 2020-05-09 10:19:22 · 264 阅读 · 0 评论 -
JavaScript之深浅拷贝
文章目录为啥会有深浅拷贝栈和堆浅拷贝解决方法一解决方法二——Object.assign()解决方法三——运算符...浅拷贝函数的封装深拷贝解决方法一—JSON.parse(JSON.stringify(object))解决方法二—封装深拷贝函数解决方法三——其他框架为啥会有深浅拷贝栈和堆栈(stack)是自动分配的内存空间,由系统自动释放堆(heap)则是动态分配的内存,大小不定也不会自...原创 2020-05-08 10:19:39 · 315 阅读 · 1 评论 -
JavaScript之this指针
文章目录this介绍this的绑定规则默认绑定隐式绑定显式绑定JS原生函数的this绑定规则new绑定绑定规则的优先级this番外忽略显式绑定间接函数引用箭头函数this介绍this在JavaScript中是一个关键字,用来代表上下文中的一个对象。因此this就是指向一个对象。但是在不同的作用域中,this的指向就不同,在全局作用域中,this指向windowconsole.log...原创 2020-05-07 10:01:59 · 437 阅读 · 1 评论 -
JS之防抖和节流
文章目录防抖原理介绍代码实现及优化自定义实现优化立即执行优化返回值节流原理介绍代码实现及优化自定义实现优化最后执行两者区别防抖和节流都是为了避免窗口的resize、scroll、输入框内容校验等事件处理函数被频繁调用,因此采用防抖和节流来限制事件调用的频率防抖原理介绍防抖是指当持续触发事件时,一定时间段内没有再次触发事件,事件处理函数才会执行一次,如果设定的时间段内又一次触发了事件,...原创 2020-05-06 17:05:18 · 554 阅读 · 0 评论 -
JavaScript之继承
文章目录继承原型链继承借用构造函数继承组合继承(常用)原型式继承寄生式继承寄生组合式继承—常用ES6中的继承继承很多面向对象语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。由于函数没有签名,在ECMAScritpt中无法实现接口继承。ECMAScript只支持实现继承,而且实现继承主要依靠原型链来实现。原型链继承原型链继承主要是让新实例...原创 2020-05-02 10:03:08 · 117 阅读 · 0 评论 -
JavaScript创建对象方法
文章目录创建对象的模式工厂模式构造函数模式原型模式理解原型对象in操作符以及hasOwnProperty方法的使用原型模式的缺点组合使用构造函数模式和原型模式—最常使用的模式寄生构造函数模式创建对象的模式创建对象有多种模式,如工厂模式、构造函数模式、原型模式、动态原型模式、寄生构造函数模式、稳妥构造函数模式工厂模式//工厂模式function createPerson(name, a...原创 2020-05-01 11:55:02 · 121 阅读 · 0 评论 -
前端链表面试题
文章目录链表常见链表题从尾到头打印链表值反转链表合并两个排序的链表链表倒数第k个节点链表中环的入口节点两个链表的第一个公共节点圈圈中最后剩下的数字-(约瑟夫环)删除链表中的节点删除表中重复的节点复杂链表的复制链表链表存储有序的元素集合,但链表中的元素在内存中并不是连续的,每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针)组成,如下图所示:相对于数组,链表的好处在于...原创 2020-04-30 15:13:57 · 1402 阅读 · 0 评论 -
JS取整取余,Math对象的操作方法
文章目录取整取整向上取整向下取整四舍五入取余取余取最大值和最小值的方法random()—取随机数toFixed()方法所有方法都是属于Math对象的方法取整取整//丢弃小数部分,保留整数部分parseInt(7/2); //3向上取整//向上取整,有小数就整数部分+1Math.ceil(7/2); //4向下取整//向下取整,丢弃小数部分Math.floor(7/...原创 2020-04-29 09:49:00 · 1304 阅读 · 0 评论 -
认识Object.defineProperty
Object.definePropertyObject.defineProperty()语法说明Object.defineProperty()的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性Object.defineProperty(obj, prop, desc)obj 需要定义属性的当前对象prop 当前需要定义的属性名desc 属性描述符属性的特性...原创 2020-04-28 11:12:11 · 152 阅读 · 0 评论 -
前端排序算法汇总
文章目录冒泡排序选择排序插入排序归并排序快速排序堆排序冒泡排序冒泡排序的原理如下,从第一个元素开始,把当前元素和下一个索引元素进行比较。如果当前元素大,那么就交换位置,重复操作直到比较到最后一个元素,那么此时最后一个元素就是该数组中最大的数。下一轮重复以上操作,但是此时最后一个元素已经是最大数了,所以不需要再比较最后一个元素,只需要比较到 length - 1 的位置。以此类推,每一次最外层...原创 2020-04-27 17:30:18 · 332 阅读 · 1 评论 -
JS函数名与变量名重名的问题
文章目录JS函数名与变量名重名的问题题1题2题3JS函数名与变量名重名的问题由于JavaScript的预编译会导致变量声明提升,声明式函数整体提升,因此当函数名与变量名重名的时候将会产生问题。变量以及变量表达式(包括函数的表达式声明)在预编译阶段都只是声明提升,而没有赋值,值都为undefined。而声明式函数在预编译阶段将会整体提升。而在编译过程中,提升也是有顺序的:参数 >...原创 2020-04-25 09:44:40 · 3099 阅读 · 2 评论 -
JavaScript运算符
文章目录JavaScript运算符JavaScript位运算符补充—位运算补码十进制与二进制之间的转换JavaScript运算符JavaScript位运算符位运算符处理32位有符号数,该运算中的任何数值运算都会被转换为32位数。运算符名称例子等同于结果十进制描述&与5 & 10101 & 000100011如果两位都是1...原创 2020-04-24 10:44:21 · 126 阅读 · 0 评论 -
ES6中...运算符的用法
文章目录ES6中的......可用于获取其余参数用于将数组或对象扩展ES6中的……可用于获取其余参数当函数或者其他需要使用参数的地方进行传参时,但是不知道具体有几个参数,就可以使用…来代表任意个参数。function print(...values){ console.log(values);}print(1); //1print(1,2,3,'aaaa',4); /...原创 2020-04-23 15:39:33 · 3726 阅读 · 0 评论 -
Object方法汇总
文章目录Object介绍Object.prototypeObject.prototype的属性Object.prototype的方法(Object的实例方法)Object.prototype.valueOf()Object.prototype.toString()Object.prototype.toString.call()——面试常考题Object.prototype.hasOwnProper...原创 2020-04-22 20:49:32 · 446 阅读 · 0 评论 -
JavaScript交换两个变量的方法
JavaScript交换两个变量的方法let a = 123;let b = 456;普通方法使用一个临时变量let temp;temp = a;a = b;b = temp;算术运算方法在算术运算过程中,将两个值进行互换,但是缺点是可能会造成数据溢出a = a + b;b = a - b;a = a - b异或运算使用位运算来交换变量值a ^= ...原创 2020-04-21 10:00:55 · 319 阅读 · 0 评论 -
JavaScript数组常用方法
文章目录数组的常用方法队列和栈push/pop,shift/unshift方法数组循环数组添加/移除的其他方法splice方法slice方法concat方法数组查询indexOf、lastIndexOf、includesfind和findIndexfilter方法数组转换map方法sort方法reverse方法split和joinreduce方法forEach迭代数组实例数组的常用方法数组的定...原创 2020-04-20 09:44:55 · 282 阅读 · 0 评论