JavaScript
文章平均质量分 67
wenxiaowen677
万事开头难呀
展开
-
JS:String 方法大总结(至 ES6)
String方法名字符方法charAt、charCodeAt、codePointAt、normalize字符串拼接方法concat、slice、substr、substring字符串位置方法indexOf、lastIndexOf、includes、startsWith、endsWith去除首尾空格trim、trimStart、trimEnd字符串...原创 2020-02-24 17:49:01 · 694 阅读 · 0 评论 -
JS:Array 方法大总结(至 ES6)
Array方法名影响原数组检测数组instanceof、Array.isArray()创建数组from、of、fill转换方法valueOf、toString、toLocaleString、join、flat、flatMap栈方法(尾)push、pop√队列方法(首)shift、unshift√重排序方法reverse、so...原创 2020-02-24 17:48:29 · 326 阅读 · 0 评论 -
原型与原型链知识梳理
总结原型的理解:每个函数对象都有原型对象,构造函数生成实例时,该属性会称为实例对象的原型,原型对象用来定义所有实例共享的属性的方法。原型链的理解:每个对象都有 __proto__ 属性,指向其构造函数的原型对象。构造函数的原型对象也是对象,也有自己的 __proto__ 属性,由此形成原型链。对象方法查找时,在本身找不到时,向原型链上找。js 继承机制的设计思想是,原型对象的所有属性和...原创 2020-02-08 22:20:09 · 294 阅读 · 0 评论 -
JS 浅拷贝与深拷贝
总结浅拷贝只复制对象第一层的属性,新旧对象的子对象共享一块内存。Object.assign()、Array 的 concat、slice 方法。深拷贝实现新旧对象数据相同,但是存在各自独立的内存中。lodash 的_cloneDeep、JSON.parse(JSON.stringify())、以及手写递归方法等。浅拷贝浅拷贝只复制对象第一层的属性,而不复制对象本身,新旧对象的子对象还是...原创 2020-02-02 21:03:25 · 129 阅读 · 0 评论 -
JS 对象遍历
方法是否继承是否包含不可枚举是否包含 SymbolObject.keys() Object.values() Object.entries()否否否Object.getOwnPropertyNames()否是否Reflect.ownKeys()否是是for…in是否否for…of 不能遍历普通对象,有两个方法可以实现,见下文...原创 2020-01-19 16:02:27 · 292 阅读 · 0 评论 -
JS 正则表达式相关方法整理
REGEXP 对象JS 通过内置对象 RegExp 支持正则表达式。有两种方法实例化 RegExp 对象:字面量、构造函数。字面量:var reg = /\bis\b/g构造函数:var reg = new RegExp(’\bis\b’,‘g’)创建方法的区别1在引擎编译代码时新建正则表达式,2在运行时新建正则表达式,所以1效率更高,而且1比较遍历和直观,在实际应用中...原创 2020-01-18 16:49:21 · 186 阅读 · 0 评论 -
JS 中的稀疏数组和密集数组
一般来说,js 中的数组是稀疏的。稀疏就是,数组的元素之间可以有空隙,因为一个数组其实就是一个键值映射。稀疏数组创建一个指定长度的稀疏数组很简单。var arr = new Array(3);遍历时,它没有元素,js 会跳过这些缝隙。密集数组创建方法一var a = Array.apply(null,Array(3));Array.apply(null, Array(3)).m...原创 2020-01-17 11:19:24 · 561 阅读 · 0 评论 -
JS 数组去重
总结去重方法10w数据耗时ms复杂数据去重效果双重循环3139普通类型除了 NaN,引用数据类型不能Array.prototype.indexOf()2784普通类型除了 NaN,引用数据类型不能Array.prototype.sort()53普通类型除了 NaN,引用数据类型不能Array.prototype.includes()3018...原创 2020-01-16 14:48:58 · 607 阅读 · 0 评论 -
V8 内存浅析
总结V8 使用 c++ 开发,主要应用于 Google chrome 和 node.js 中。内存构成为:new space:大多数对象,小,回收频繁old space:只保存原始数据对象,没有指向其它对象的指针large object space:有自己的内存,不会移动大对象区code space:代码对象,唯一拥有执行权限的内存map:cell 和 map,每个区域...原创 2020-01-15 19:34:58 · 469 阅读 · 0 评论 -
JS 中的内存回收和内存泄露
总结js 的垃圾回收是周期性的,根据判断变量是否在被继续使用,如果不被使用则作为垃圾回收常用的策略是引用计数和标记清除。引用计数判断变量是否有指向它的引用,没有的话回收,这种方式有循环引用的问题;标记清除判断变量是否可达,不可达则回收。内存泄露可以通过 chrome 开发者工具进行快照 snapshot 或者 memory record,也可以通过这种方式进行问题排查内存泄露可能原因:意...原创 2020-01-14 15:17:06 · 594 阅读 · 0 评论 -
Symbol 类型
总结Symbol 是一个基础数据类型,表示独一无二的值,可以用于消除魔术字符串。Symbol 的创建不用new操作符,直接用 Symbol(val)。Symbol 可以作对象属性,该属性是唯一的,Symbol 作为对象属性名时,不能用点运算符。获取对象中的 Symbol 属性,可以用 Object.getOwnPropertySymbols 或 Reflect.ownKeys。常用方法...原创 2020-01-13 15:37:29 · 1417 阅读 · 0 评论 -
JS 中的 == 与 ===
=== 严格运算符:类型不同就不相等如果类型不同,就[不相等]如果两个都是数值,并且是同一个值,那么[相等];如果其中至少一个是 NaN,那么[不相等]。(判断一个值是否是 NaN,只能用 isNaN() 来判断)如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。如果两个值都是 true,或者都是 false,那么[相等]。如果两个值都引用同一个对象或函数,那么[...原创 2020-01-10 19:32:07 · 135 阅读 · 0 评论 -
JS 数据类型理解
值类型变量本身含有赋予给它的数值,它的变量本身及保存的数据都存储在栈的内存块当中。Undefined Null Boolean Number String Symbol(es6新增)NumberNumber 类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。NaN: 非数字类型。特点:① 涉及到的任何关于 NaN 的操作,都会返回 NaN ② ...原创 2020-01-10 19:31:39 · 145 阅读 · 0 评论 -
0.1+0.2=?
计算机中用二进制来存储小数,大部分小数转成二进制之后都是无限循环的值,因此存在取舍问题,也就是精度丢失。解决方案:使用 mathjs、使用 tofixed、小数和整数分开相加、与 Math.pow(2,-52) 比较(如下)function equal(number1, number2) {return Math.abs(number1 - number2) < Math.pow(2,...原创 2020-01-10 19:31:06 · 243 阅读 · 0 评论 -
babel 原理三:babel 的工作原理
更新 babel7.xpreset 的变更:淘汰 es201x、删除 stage-x、强推 envnpm package 名称的变化:把所有 babel-* 重命名为 @babel/*不再支持低版本 node:要求 nodejs>=6only 和 ignore 匹配规则的变化@babel/node 从 @babel/cli 中独立了babel-upgradebabel 的工作原...原创 2020-01-10 19:30:31 · 1143 阅读 · 0 评论 -
babel 原理二:babel 的配置
babel 的配置使用形式命令行:babel 的设置以命令行参数的形式package.json:在 babel 字段添加设置.babelrc 文件:推荐使用常用 options 字段说明env: 指定在不同环境下使用的配置。env 字段从 process.env.BABEL_ENV 获取,不存在的话从 process.env.NODE_ENV 获取,如果还是不存在,则取默认值 d...原创 2020-01-10 19:28:12 · 244 阅读 · 0 评论 -
babel 原理一:babel 包的构成
babel 的包的构成核心包babel-core: babel 转译器本身,提供了 babal 的转译 API,如 babel.transform 等,用于对代码进行转译babylon: js 的词法解析器(babel 7.x 重命名为 @babel/parser)babel-traverse: 用于对 AST 的遍历,主要给 plugin 用babel-generator: 根据 AS...原创 2020-01-10 19:27:29 · 313 阅读 · 0 评论 -
地图大量数据查询与渲染——bug及解决方案
本文记录大数据可视化项目中信息查询过程遇到的实际问题及解决方案,用到了Vue自定义组件、Promise.all、DocumentFragment、event loop等。项目需求项目使用的arcgis地图服务中主要地图要素为图斑即面状要素,需要根据图斑属性对图斑进行查询,获得符合要求的图斑并高亮显示。问题及解决方案总结问题1属性查询多条件组合问题:简单易懂的多条件的输入解决...原创 2019-05-14 12:39:25 · 4808 阅读 · 0 评论 -
JS:位运算简单总结与实用技巧
目录位运算基础按位与(&)按位或(|)按位非(~)按位异或(^)有符号左移(<<)有符号右移(>>)无符号右移(>>>)其他应用实例(待补充)n&(n-1)判断一个数是否为2的幂求数中某一个数的二进制表示中1的个数位运算执行效率更高比一般的数值运算效率更高。位运算基础按位与(&am...原创 2019-02-20 19:48:17 · 573 阅读 · 0 评论 -
ArcGIS API for JS:实现属性查询
项目记录:关于ArcGIS APIfor JS查询方法的比较和应用查询方法比较:FindTask、QueryTask、IdentifyTask不同点FindTask只能进行属性查询,QueryTask,IdentifyTask两个类既可以进行属性查询也可以进行空间查询。 对于QueryTask,IdentifyTask两个类,QueryTask只可应用于一个单独的图层,Identi...原创 2018-10-08 16:46:32 · 3060 阅读 · 0 评论 -
JS:非核心代码延迟加载方法
延迟加载方法1.script标签的defer\async属性,均能在html解析时加载,均只适用于外部脚本文件。defer会按照顺序执行,async不会。2.使用最多的方法:动态创建DOM的方法。新建<script>元素,添加到DOM。3.jquery.getScript()方法,加载并在全局作用域下执行脚本,jQuery.getScript()不会缓存。$.getScri...原创 2019-04-01 21:31:25 · 2260 阅读 · 0 评论