javaScript
Jane_Lee18
这个作者很懒,什么都没留下…
展开
-
一些数组方法的总结
参考MDNArray.from()Array.from() 方法从一个类似数组(伪数组)或可迭代对象创建一个新的,浅拷贝的数组实例。from() 的 length 属性为 1 ,即 Array.from.length === 1。// 从String生成数组Array.from('foo'); // [ "f", "o", "o" ]// 从Set生成数组const set = new Set(['foo', 'bar', 'baz', 'foo']);Array.from(set);原创 2020-09-13 17:41:34 · 84 阅读 · 0 评论 -
你应该知道的一些数组遍历方法
遍历数组的方法有很多种,传统的有:for、forEach、for-in、 for-of(ES6),其他的还有:map、reduce、reduceRight、filter、every、some、find(ES6)、findIndex(ES6)参考MDN传统经典for适用于数组和字符串 let arrOrStr = [1, 2, 3, 4, 5, 6]; // let arrOrStr = 'abcdefg'; for(let i = 0, len = arrOrStr.length;原创 2020-09-06 16:20:34 · 202 阅读 · 0 评论 -
一些数组的操作技巧
工作中大多数情况下都是对数组的操作,熟练掌握数组操作的奇淫技巧,对数组运用自如也能提高工作效率。数组去重(改变原数组)先讲两个ES6时代简单的去重方法,都是用Set结构完成: let letters = ['a', 'b', 'c', 'd', 'c', 'b', 'a']; let uniqueLetter = Array.from(new Set(letters)); console.log(uniqueLetter); let uniqueLetter1 = [原创 2020-08-09 16:09:54 · 252 阅读 · 0 评论 -
定义变量的var、let和const有什么区别
此文首发于 https://lijing0906.github.io入职两个月了,总结也迟到两个月了。因为疫情的原因,今年的面试大多是远程面试,所以几乎每次面试都有做相应的问题笔记。从这篇博客开始,把面试中问到的问题做个总结,一是复盘面试中自己的问题,二呢也是为以后的面试做准备。参考阮大大的let 和 const 命令作用域ES5只有全局作用域和函数作用域,就会出现内层变量可能会覆盖外层变量。var tmp = new Date();function f() { console.log(原创 2020-07-26 17:59:51 · 249 阅读 · 0 评论 -
Promise面试题
此文首发于 https://lijing0906.github.io前面的文章梳理了一下有关浏览器进程、事件循环机制、微任务和红任务、Promise的相关知识,这篇文章想讲讲有关这些知识的一些面试题。参考文章题目一const promise = new Promise((resolve, reject) => { console.log(1) resolve() ...原创 2019-12-01 20:56:47 · 225 阅读 · 0 评论 -
Promise
上一篇博客讲到浏览器的进程和线程、循环机制、微任务和宏任务,Promise在JS的循环机制中属于微任务,同时也是异步编程的一种解决方案。Promise简介Promise可以看成是一个容器,装着一个异步操作(某个未来才会结束的事件)的结果。Promise操作后返回的对象是一个新的Promise对象,所以支持链式调用,可以把异步操作的流程以同步操作的流程表达出来,避免回调地狱,便于理解和阅读。P...原创 2019-11-17 19:21:38 · 235 阅读 · 0 评论 -
浏览器进程、JS事件循环机制、宏任务和微任务
此文首发于 https://lijing0906.github.io本想写写Promise的,但是查阅相关博客的时候发现浏览器进程、JS事件循环机制、宏任务和微任务需要提前学习一下,于是有了这篇博客。参考链接区分进程和线程用个形象的比喻:进程是一个工厂,工厂有自己独立的资源工厂之间相互独立线程是工厂中的工人,多个工人协作完成任务工厂内有一个或多个工人工人之间共享空间...原创 2019-11-10 00:18:36 · 392 阅读 · 0 评论 -
Object.assign的原理及其实现方式
此文首发于 https://lijing0906.github.io上周在总结赋值和深浅拷贝的时候提到了Object.assign这种浅拷贝方式。这周谈谈它的原理以及实现方式。浅拷贝Object.assign上篇文章有讲到它的定义和用法,主要是将所有可枚举属性的值从一个或多个源对象中复制到目标对象,同时返回目标对象。语法如下:Object.assign(target, ...sourc...原创 2019-11-07 23:02:27 · 663 阅读 · 0 评论 -
赋值、浅拷贝和深拷贝的区别
此文首发于 https://lijing0906.github.io中秋快乐!今天放假,想总结一下赋值、浅拷贝和深拷贝的区别。赋值(Copy)赋值是将某一数值或对象赋给某个变量的过程,分两种情况:基本数据类型:赋值,赋值后两个变量互不影响引用数据类型: 赋址,两个变量指向同一个地址,同一个对象,相互之间有影响对基本数据类型的赋值,两个变量相互不影响:var a = 1;var...原创 2019-11-07 23:01:34 · 184 阅读 · 0 评论 -
模拟实现bind()
此文首发于 https://lijing0906.github.io前面已经讨论过bind()的用法,这篇文章一步一步模拟实现bind()。bind特点可以指定this返回一个函数可以传入参数模拟实现第一步Function.prototype.bind2 = function(context) { var self = this; // this是调用bind2的对象 ...原创 2019-11-07 22:59:13 · 168 阅读 · 0 评论 -
模拟实现call()、apply()
此文首发于 https://lijing0906.github.io之前总结过call()、apply()的区别和应用场景,这次想总结如何模拟实现这两者,其实就是搞懂它们的原理。模拟实现call()var foo ={ value:1}function bar(){ console.log(this.value)}bar.call(foo); // 1call()的两个特...原创 2019-11-07 22:57:53 · 168 阅读 · 0 评论 -
JS闭包和作用域
此文首发于 https://lijing0906.github.io今天来啃闭包和作用域这块难啃的骨头。什么是闭包闭包是函数和声明该函数的词法环境的组合。 ----MDN闭包就是指有权访问另一个函数作用域中的变量的函数。 ----红宝书什么是作用域作用域是一个变量和函数的作用范围,JS中函数内声明的所有变量在函数体内始终是可见的,在ES6前有全局作用域和局部作用域,但是没有块级...原创 2019-11-07 22:55:45 · 152 阅读 · 0 评论 -
Object.create()、new Object()和{}的区别
此文首发于 https://lijing0906.github.io平时代码中必定会使用对象,通常是用最直接的字面量方法创建var obj = {},最近在整理JS继承方式时遇到Object.create()也可以创建对象,另外,也可以用new Object()关键字创建。那这三种方式有差别吗?直接字面量创建var objA = {};objA.name = 'a';objA.sayN...原创 2019-11-07 22:54:21 · 2828 阅读 · 1 评论 -
原型和原型链
此文首发于 https://lijing0906.github.ioJavaScript是一门面向对象的设计语言,在JS里除了null和undefined,其余一切皆为对象,是对象就会有原型、构造函数、原型对象,就会有原型链。之前写javaScript的继承方案时,讲到继承依据的原理就是构造函数、实例对象、原型对象之间的三角关系,这只是原型链上的一小部分。今天详细梳理一下原型和原型链的知识。...原创 2019-11-07 22:53:16 · 117 阅读 · 0 评论 -
call()、apply()、bind()的区别
此文首发于 https://lijing0906.github.io这周讲讲call()、apply()和bind()的区别。参考链接在javascript中,call()和apply()都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部this的指向。JavaScript的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改...原创 2019-11-07 22:50:50 · 107 阅读 · 0 评论 -
JS中的this指向问题
此文首发于 https://lijing0906.github.io在上篇JS继承中涉及到的好几个知识点都想写,比如call()、apply()从而牵出和bind()的区别,由Object.create()想到与new Object()、{}的区别,原型链以及作用域,然而在参考其他博客时发现,应该先把JS中的this指向弄明白。《你不知道的JavaScript》(上卷)第二部分讲到了this,...原创 2019-11-07 22:48:36 · 196 阅读 · 0 评论 -
JS字符串编码
此文首发于 https://lijing0906.github.io最近在工作中遇到一个bug:背景新增或者编辑标签时,输入框失焦时需要校验标签名是否与已有标签名重复,而标签名只有字数限制(1-10个字符)。问题校验的接口是get请求,当标签名以“#”、“&”结尾时,会出现一点小问题:比如已存在名为“aa”的标签,当输入“aa#”或“aa&”(这两个标签名不存在)失焦校验...原创 2019-11-02 02:25:01 · 521 阅读 · 0 评论 -
javaScript的继承方案
此文首发于 https://lijing0906.github.io从创建这个博客开始,第一篇博客是2018.07.10,到今天2019.07.20已经整整一年了,回头看博客的数量才寥寥11篇,平均一个多月才一篇,汗颜!最近有换工作的想法,但又觉自己的一些基础知识不牢固,同时这些基础知识也是面试中会考察的,所以给自己定下一个小目标,每周总结一篇面试中会考察的知识点,一为巩固知识,二为准备面试,...原创 2019-11-07 22:36:41 · 108 阅读 · 0 评论