
原生js
文章平均质量分 74
一笑而泯
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ES2021新特性
目前,进入stage4的提案已基本确定,所以ES2021(也就是ES12)的新功能也基本确定了,来看一下吧。惯例,提案戳这1.String.prototype.replaceAll之前字符串实例,只有replace方法可以替换生成对应的字符串。第一个参数是匹配模式,可以是字符串,也可以是正则。如果第一个参数是字符串,那么replace方法最多只会替换一次所以之前的replace方法其实可以实现现在的replaceAll方法的功能,只需要在正则加上'g'的修饰符即可。const s原创 2021-02-27 16:37:31 · 2323 阅读 · 0 评论 -
监听dom变化-Mutation observers
一、背景通常,为了响应某个变化而执行一段逻辑,我们可以将这段逻辑的调用,放在这个变化的入口或者出口。所谓入口,是指这个变化发生的源头,所谓出口,是指这个变化发生之后走的逻辑。这么说可能比较抽象,举个例子,页面上有个输入框,用户可以输入数字,也可能是通过后端推送的websocket更改输入框的数字,我们要在数字变化的时候触发个逻辑。有两种选择,一是入口。因为改变数字的原因,我们全都知道,所以可以监听输入框的Input事件,在这个事件里面触发对应的逻辑,同时在websocket的回调里触发对应的逻辑,此原创 2020-11-07 19:02:17 · 2321 阅读 · 2 评论 -
原生实现dom生成图片
一、需求背景最近开发时,有遇到这么一个需求,要将一个有大量图表/文字/图片的页面导出为pdf(该页面的图表以及文字、图片是可动态配置的),目前主流的方式都是用htmlCanvas插件做的,我们一向的原则是少用插件多用原生,所以最后和产品沟通,导出为图片,因为图片可以用原生实现,并且默认单页,效果也非常好。二、实现方式实现方式参考了张鑫旭老师的一篇文章借助SVG forginObject实现DOM转图片 ,在此基础上做了一些细节的调整。这种方式基本的原理,就是将dom转换成xml结构,然后放.原创 2020-08-29 14:44:31 · 3377 阅读 · 1 评论 -
ES11版本新特性
在上个月(2020.6),es11的特性已经确定了,具体的提案戳这stage4提案下面来简单看看es11新增了什么特性吧1.BigInt我们知道,js能表示的安全整数范围是-(2^53-1)至2^53-1,这是由js存储数字的方式决定的,我们可以用Number.isSafeInteger()来判断某个数是否在这个范围内,上下边界可以用Number.MIN_SAFE_INTEGER 和Number.MAX_SAFE_INTEGER得到。es11为了解决大数的表示问题,推出了新的数据...原创 2020-07-05 18:49:11 · 1504 阅读 · 0 评论 -
关于代码组织的一点思考
一、前言开发能力,见于大,更见于小。大者,在于代码所解决的需求难易;小者,在于代码本身的组织方式。最近经常失眠,想些乱七八糟的。幸好,其中相当一部分是在反思总结自己的不足。越来越能体会到,代码简洁的重要性。写出代码的下一个阶段,是对代码的优化。简洁简洁,精简,干净。简洁不代表简单,把一串繁杂的代码简化,体现了开发者对于代码本身的思考程度。二、示例我最早在掘金看到过一篇介绍优化i...原创 2020-04-05 21:26:58 · 225 阅读 · 0 评论 -
从数组的遍历方式谈谈代码的语义性
一、前言我之前的一篇文章介绍了几种遍历数组的方式,当然远不止这几种。不过今天想谈的是别的东西,数组遍历的具体方式和用法就不再赘述了。今天,我想以数组遍历方式为切入点,谈一下代码的语义性。当然,这只是个人理解。首先,代码语义性是什么?从我的角度来说,语义性就是代码本身呈现的、和具体功能无关的、表达代码作用的程度,或者说是代码直观的程度。别人看一段代码,不看代码具体的执行逻辑和过程,能理解...原创 2020-04-04 21:06:41 · 895 阅读 · 0 评论 -
原生实现es5中的some、every、filter、reduce、map方法
之前还是菜鸟的时候,闲来无事,原生实现了几个es5新增的、函数式编程理念的方法,现在放上来相当于记录一下吧。 Array.prototype.map = function(fn) { let res = []; let that = this; for (let i = 0; i < that.length; i++) { ...原创 2020-03-15 22:24:11 · 309 阅读 · 0 评论 -
多维数组处理成树形结构,以及按照树形结构转换为一维数组或者多维数组
来源是朋友问我的一个问题,多维数组的扁平化以及一维数组逆向还原成原始数组。多维数组的扁平化不必多说,数组实例的flat方法就行。低版本浏览器的话也可以写递归,参考我去年的一篇文章(注:当时写的有点粗糙,仅供参考)多维数组变成一维数组关于一维数组的逆向,可以说,如果只是简单的一维数组,那么是无法实现逆向的,因为一维数组没有保存原始的结构信息。所以,一维数组的逆向,其实就是从一个保存了原始数据...原创 2019-06-13 23:25:12 · 1663 阅读 · 2 评论 -
原生实现promise
es6语法提供了Promise构造函数,可以很方便的进行异步操作。因此想用es5语法手动实现一个Promise的类,并且实现它的功能。下面上代码: function myPromise(callBack) { "use strict"; var that = this; var promiseArg; //保存每次回调的参数...原创 2019-01-27 18:09:03 · 479 阅读 · 0 评论 -
js显式类型转换、隐式类型转换及相关==操作符的总结(二)
之前我写过一篇关于==操作符的文章,当时觉得还行,看完《你不知道的javascript 中卷》之后才觉得汗颜。之前的文章错漏百出,也毫无章法,因此参考该书及ECMAScript相关规范,重新整理了一下==操作符的相关规则。关于对象的抽象化操作(toprimitive)的介绍,可以参考我上一篇文章戳我在进行==比较时,也会发生隐式类型转换(对象会执行toprimitive操作),这里就介绍一...原创 2019-01-06 23:56:41 · 334 阅读 · 0 评论 -
js显式类型转换、隐式类型转换及相关==操作符的总结(一)
本篇文章根据《你不知道的javascript 中卷》及ECMAScript标准总结而来,如有错误还请指正。一、Toprimitive运算符1、介绍ToPrimitive 运算符接受一个值,和一个可选的期望类型作参数。ToPrimitive 运算符把其值参数转换为非对象类型。如果对象有能力被转换为不止一种原语类型,可以使用可选的期望类型来暗示那个类型以上是ECMAScri...原创 2019-01-06 01:46:37 · 1721 阅读 · 0 评论 -
探究try catch的局部作用域问题
es3推出的try catch想必大家都不陌生,这是一个标准的捕获异常的方法。通常,遇到异常,浏览器会停止执行js并抛出异常。如果出现异常的代码在try catch内,浏览器不会中断js线程,而是会执行catch内的代码,触发catch函数并将异常作为参数传递给函数。这篇文章暂且只讨论try catch创建的作用域,不专门介绍用法。try catch具体用法参考 try catch MDN...原创 2018-12-23 00:15:42 · 5337 阅读 · 0 评论 -
==、===、isNaN、Object.is的比较以及相关的隐式类型转换问题分析
1、== ==是相等运算符,比较两个数据并返回boolean类型的值。比较的时候,会发生隐式类型转换。比如:因为引用对象,比较的是指针指向的内存是否为同一个数据,所以原因就是左右两边的数组(对象)是单独的,并不是同一块内存存储的数据。2、===全等运算符===。除了比较原始值,还会比较两个数据的类型,即不会发生隐式类型转换。在此,就有一个有趣的问题需要说明一下。...原创 2018-08-28 21:49:42 · 895 阅读 · 0 评论 -
数组遍历的几种方法及用法
js提供了多种遍历数组的方法,具体使用场景略有区别,在此简单介绍一下。一、forEach方法forEach是最简单、最常用的数组遍历方法,它提供一个回调函数,可用于处理数组的每一个元素,默认没有返回值。以上是个简单的例子,计算出数组中大于等于3的元素的个数。回调函数的参数,第一个是处于当前循环的元素,第二个是该元素下标,第三个是数组本身。三个参数均可选。二、map方法m...原创 2018-07-21 16:40:15 · 104612 阅读 · 4 评论 -
多维数组变成一维数组
这个问题来源于一个朋友曾经问过我的问题,当时是一个二维数组变成一维数组。后面我想整理一下,整理一个多维,并且是不定维的数组。一、二维数组变成一维数组1、遍历数组,将元素一个个放入新数组结果:如果元素不是数组,将会报错。下面是改良版:这样的方法仍显臃肿2、用apply的特性,将数组作为参数展开concat接受单个值作为参数,所以不需要识别。3、利用es6新...原创 2018-07-21 01:07:23 · 23467 阅读 · 4 评论 -
如何将类数组转换为真正的数组
开发过程中,有很多时候获取到的是类似数组的对象。比如元素的集合(elementcollection,nodeList,以及今天开发时发现classList也是类数组)。有时我们需要类数组去调用数组的方法,怎么办? 一、遍历类数组,依次将元素放入一个空数组。类数组本身虽然不是数组,但是有interator接口,所以可遍历。(interator指可遍历、可迭代)例如:页面有三个...原创 2018-07-19 00:32:41 · 17181 阅读 · 0 评论