Jascript核心原理
不甜的糖果
这个作者很懒,什么都没留下…
展开
-
JS核心原理 - 模块二 - JS数组多个方法的底层实现
JS核心原理模块二 深入数组篇JS数组多个方法的底层实现思考: 1、reduce 方法里面的参数都是什么作用? 2、push 和 pop 的底层逻辑是什么样的呢?push 方法的底层实现Array.prototype.push = function(...items) { let O = Object(this); // ecma 中提到的先转换为对象 let len = this.length >>> 0; let argCount = items.l原创 2021-05-07 08:59:48 · 133 阅读 · 0 评论 -
JS核心原理 - 模块二 - sort排序方法的实现原理
JS核心原理模块二 深入数组篇sort排序方法的实现原理思考: 1、sort 方法到底是用了哪种排序思路? 2、sort 方法里面的参数对比函数是什么意思?sort 方法的基本使用sort 方法是对数组元素进行排序,默认排序顺序是先将元素转换为字符串,然后再进行排序arr.sort([compareFunction])const months = ['March', 'Jan', 'Feb', 'Dec'];months.sort();console.log(months);//原创 2021-05-05 19:57:49 · 178 阅读 · 0 评论 -
JS核心原理 - 模块二 - 如何用JS实现各种数组排序
JS核心原理模块二 深入数组篇JS实现各种数组排序思考:1、数据结构中稳定的排序算法有哪些?不稳定的排序算法有哪些?2、时间复杂度和空间复杂度分别代表了什么?时间复杂度 & 空间复杂度时间复杂度: 说的更多的是通过O(nlogn)以及O(n)等来衡量,其实大多数时候我们对此并未建立形象的认知,到底哪一种算法更快、更好呢?空间复杂度: 对一个算法在运行过程中临时占用存储空间大小的度量 有的算法需要占用的临时工作单元数与解决问题的规模有关 如果规模越大,则占的存储单元越多原创 2021-05-05 19:05:02 · 101 阅读 · 0 评论 -
JS核心原理 - 模块二 - 实现数组扁平化的6种方式
JS核心原理模块二 深入数组篇实现数组扁平化的6种方式数组扁平化在一些多维数组的应用场景中会出现思考: 1、怎样用最普通的方法解决数组扁平化问题? 2、ES6里面是否有一些高级的方法能够直接实现?扁平化的实现: 将一个嵌套为多层的数组array(嵌套可以是任何层数据) 转换为只有一层的数组方法一:普通的递归实现通过循环递归的方式,一项一项地去遍历,如果每一项还是一个数组,那么就继续往下遍历,利用递归程序地方法,来实现数组的每一项的连接// 方法一:递归实现,返回新数组var原创 2021-05-05 17:45:27 · 68 阅读 · 0 评论 -
JS核心原理 - 模块二 - 如何理解JS的类数组
JS核心原理模块二 深入数组篇如何理解JS的类数组JS中一直存在一种类数组的对象它们不能直接调用数组的方法,但是又和数组比较类似在某些特定的编程场景中会出现 1、函数里面的参数对象arguments 2、用getElementsByTagName/ClassName/Name获得的HTMLCollection 3、用querySelector获得的NodeList==========================================================思考:原创 2021-05-05 17:10:49 · 53 阅读 · 0 评论 -
JS核心原理 - 模块二 - 数组API
JS核心原理模块二 深入数组篇数组API思考: 1、数组的构造器有哪几种? 2、哪些是改变自身的方法? 3、哪些不改变自身的方法? 4、遍历的方法有哪些?截至ES7规范,数组共包含33个标准的API方法和一个非标准的API方法Array的构造器Array构造器用于创建一个新的数组,通常推荐使用对象字面的方式创建一个数组// 使用Array构造器,可以自定义长度var a = Array(6); //[undefined * 6]//使用对象字面量var b = [];b原创 2021-05-04 17:30:46 · 66 阅读 · 0 评论 -
JS核心原理 - 模块一 -实现JSON.stringify方法
JS核心原理模块一 基石篇实现JSON.stringify方法方法介绍JSON.stringify是日常开发中经常用到的JSON对象中的一个方法 用于解析成JSON对象的parse() 用于将对象转换为JSON字符串方法的stringify()JSON.parse()JSON.parse方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象 第一个参数是需要解析处理的JSON字符串 第二个参数是可选参数提供可选的reviver函数 JSON.parse(text,原创 2021-05-03 22:22:11 · 192 阅读 · 0 评论 -
JS核心原理 - 模块一 - JS闭包难点剖析
JS核心原理模块一 基石篇JS闭包难点剖析思考以下问题: 1、JavaScript中的作用域是什么意思? 2、闭包会在哪些场景中使用? 3、通过定时器循环输出自增的数字通过JS代码如何实现?作用域基本介绍JavaScript的作用域 指变量能够被访问到的范围 ES5之前:全局作用域和函数作用域 ES6出现之后:新增块级作用域全局作用域变量一般都会分为全局变量和局部变量两种在JavaScript中,全局变量是挂载在window对象下的变量,所以网页中的任何位置,都可以使用并且访原创 2021-05-03 21:42:35 · 108 阅读 · 0 评论 -
JS核心原理 - 模块一 -继承进阶:如何实现new、apply、call、bind的底层逻辑
JS核心原理模块一 基石篇继承进阶:如何实现new、apply、call、bind的底层逻辑思考问题: 1、用什么样的思路可以new关键词? 2、apply、call、bind这三个方法之间有什么区别? 3、怎样实现一个apply或者call的方法?new原理介绍new关键词的主要作用: 执行一个构造函数、返回一个实例对象 根据构造函数的情况,来确定是否可以接受参数的传递function Person() { this.name = 'jack';}var p = new P原创 2021-05-03 18:07:51 · 79 阅读 · 0 评论 -
JS核心原理 - 模块一 -JS常见的6种继承方式
JS核心原理模块一 基石篇JS常见的6种继承方式继承使用继承的优势: 继承是面向对象的,使用这种方式,可以更好地复用以前开发的代码,缩短开发周期、提升开发效率 继承在各种编程语言中都充当着至关重要的角色思考: 1、JS的继承有多少种实现方式? 2、ES6的extends关键字是用哪种继承方式实现的?继承的概念: 继承可以使得子类具有父类的各种方法和属性第一种:原型链继承原型链继承是比较常见的继承方式之一,其中涉及的构造函数、原型和实例 每一个构造函数都有一个原型对象 原型对原创 2021-05-03 10:51:35 · 100 阅读 · 0 评论 -
JS核心原理 - 模块一 - 如何实现一个深浅拷贝
JS核心原理模块一 基石篇如何实现一个深浅拷贝JS的两种数据类型:基础数据类型、引用数据类型思考以下问题:1、深拷贝和浅拷贝的区别和定义:在JavaScript的编程中经常需要对数据进行复制,什么时候用深拷贝、什么时候用浅拷贝,是开发过程中需要思考的。2、拷贝一个很多层嵌套的对象怎么实现的?3、在面试官眼中,写成什么样的深拷贝代码才能算合格?浅拷贝浅拷贝定义: 自己创建一个新的对象,来接受你要重新复制或引用的对象值。如果对象属性是基本的数据类型,复制的就是基本类型的值给新对象;但如原创 2021-05-02 17:02:49 · 76 阅读 · 0 评论 -
JS核心原理 - 模块一 - JS数据类型
JS核心原理模块一 基石篇JS的数据类型一、概念JavaScript数据类型一共有8种前7种为基本数据类型,Object为引用类型数据类型大致可以分为两类:1、基础类型存储在栈内存,被引用或者拷贝时,会创建一个完全相等的变量2、引用类型存储在堆内存,存储的是地址,多喝引用指向同一个地址,这里会涉及“共享概念”let a ={ name:'lee', age: 18}let b = a;console.log(a.name)b.name = 'son';console.lo原创 2021-05-02 10:58:37 · 82 阅读 · 0 评论