![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javascript
暮春风
Web前端工程师
展开
-
认识 openlayers
认识 openlayersopenlayers 版本 4.6.5实现一张地图这是一个地图实例,你可以把以下内容复制到一个新的 html 文件中,打开试试。<!doctype html><html lang="en"> <head> <link rel="stylesheet" href="https://openlayers.org/en/v4.6.5/css/ol.css" type="text/css"> <style&原创 2020-12-23 15:52:24 · 457 阅读 · 1 评论 -
JavaScript 常规深拷贝方法
JavaScript 深拷贝(无 function 拷贝)function isObject (obj) { return (typeof obj === 'object' || typeof obj === 'function') && (obj !== null)}function deepcopy (obj, hash = new WeakMap()) { let copyObj, constructor = obj.construc原创 2020-08-31 15:04:04 · 228 阅读 · 1 评论 -
JavaScript Symbol 对象的理解与使用
Symbol唯一值,用于防止属性名冲突使用Symbol()来创建值不会进行记录,所以无论值看起来是否一样都不会引用同一份内存地址。没有构造函数,直接使用let sybl = Symbol()let syblObject = { [sybl]: "通过唯一值创建"}可作为私有变量不想被 for/in、for/of 遍历操作找到时可使用Symbol,若想找到时需使用Reflect.ownKeys(syblObject)Object.getOwnPropertySymbols(s原创 2020-08-31 11:17:38 · 301 阅读 · 0 评论 -
JavaScript Map 对象的理解与使用
MapMap 对标的是 Object,是一种类似于对象的键值对数据结构不同于Object 的是Map 的键可以为任意类型的值(null 会被当做 undefined),而不仅仅为字符串Map 的键值是有序的,可通过 size 获取长度Map 在频繁增删键值对的场景下会有一些性能优势let map = new Map([ ["姓名", "张三"], ["年龄","18"]])// 类似于:let obj = { '姓名': '张三', '年龄': 18}原创 2020-08-31 10:49:45 · 614 阅读 · 0 评论 -
JavaScript Set 的用法与理解
SetSet 与数组类似, Set 集合中的元素不重复。查找元素: 在数组中使用 indexOf() 或 includes() 检查元素是否存在比较慢。删除元素: 在 Set 中,可以通过值删除元素。即在数组中,基于索引的splice() 功能。插入元素: 在 Set 中添加元素比在数组中通过 push()、 unshift() 或其他同类操作要快。去重: Set 对象仅能存储不同的值。如果你想避免存储重复的值,这会比数组具有更大的优势。在数组中你需要一些额外的代码来做去重。let arr原创 2020-08-31 09:56:29 · 11327 阅读 · 0 评论 -
JavaScript setTimeout 的原理
JavaScript 引擎是基于事件驱动单线程执行的,JavaScript 引擎一直等待着任务队列中的任务,接收到任务就加以处理,任务过多时会按序等待处理。setTimeout 调用的时候,JavaScript引擎会启动定时器 timer,在第二个参数 n 毫秒 以后执行第一个参数回调或代码段,当定时器的时间到了,就把该事件放到主事件队列等待处理。也就是说需要看任务放到队列中的顺序。...原创 2017-11-10 14:25:57 · 685 阅读 · 0 评论 -
经常用到的 ES6/7 新特性
ES6/7 新特性字符串模版letconst箭头函数(默认参数) const action = (num = 10)=> console.log(num) action() action(300)对象初始化简写 var name = "dukai" var age = 28 var person = {name, age}对象方...原创 2017-08-31 10:03:42 · 2232 阅读 · 0 评论 -
掌握 XMLHttpRequest ,了解请求库的实现机制
先做个尝试为了确保没有跨域的错误,使用浏览器打开百度首页,然后打开控制台,将如下代码输入控制台并执行var type = "GET" var isAsync = true var url = "https://www.baidu.com/" var xhr = new XMLHttpRequest()xhr.onreadystatechange = stateChange ...原创 2018-04-24 14:21:28 · 313 阅读 · 0 评论 -
深度优先和广度优先的概念理解
概念深度优先:找到一个节点后,把它的后辈都找出来,最常用递归法。广度优先:找到一个节点后,把他同级的兄弟节点都找出来放在前边,把孩子放到后边,最常用 while。举例数据 var nodes = [ { name: "爷爷", children: [ { name: '爸爸', children: [{ ...原创 2019-07-12 11:36:32 · 2544 阅读 · 0 评论 -
数值型的特殊用法(可实现 var a=(5).plus(3).minus(6); //2) 函数式编程
原理:数值型的函数调用可以这样(5).toString();然而,如下代码会报错。(SyntaxError: Unexpected token ILLEGAL)5.toString();实现方式即给Number添加原型方法Number.prototype.plus=function (num){ return this.valueOf()+num; }; Numb原创 2015-09-14 12:28:32 · 1526 阅读 · 2 评论 -
转化一个数字数组为function数组(每个function都弹出相应的数字),闭包的使用
示例数组:var nArray=[4002,1,5,99,2,1001,2335,9,20,48,3001,520,6666];支持 ECMAScript 5 中定义的 forEach 方法的浏览器可使用function turnToFunction(arrays){ arrays.forEach(function(item,index,array){ arrays[原创 2015-09-09 16:20:16 · 1441 阅读 · 0 评论 -
找出数值数组中最大的元素(使用Math.max函数)
示例数组:var nArray=[4002,1,5,99,2,1001,2335,9,20,48,3001,520,6666];在支持数组reduce方法的浏览器中可使用如下方法function getMax(arrays){ var max = arrays.reduce(function(pre,cur,index,array){ return Math.ma原创 2015-09-09 15:50:07 · 9665 阅读 · 1 评论 -
给object数组进行排序(排序条件是每个元素对象的属性个数)
示例数据:var book={ page:400 } var car={ color:"red", door:"four" } var person={ name:"dpd", age:26, height:175 } var oArray=[car,person,book];思路是使用数组的排序方法 sort() ,该方法接收一原创 2015-09-09 16:57:57 · 3601 阅读 · 0 评论 -
利用JavaScript打印出Fibonacci数(不使用全局变量打印斐波那契数)
调用方式,比如输出第二十项:outputFibonacci([],20);实现思路:通过数组作为存储对象,利用闭包递归取得想要的项的值。思路比较简单,效率问题,还望大家指正。function outputFibonacci(len){ return function Fibonacci(arrays,len){ if(typeof len!=='number'||len<=0原创 2015-09-10 15:56:34 · 1502 阅读 · 0 评论 -
实现add(2)(3)(4)得出结果为 9
闭包缓存args值返回函数本身,在参数基础上加上了缓存值重写toString或valueOf函数,用于输出和相加function add(args) { var result = function(addend) { return add(args + addend); } result.toString = result.valueOf = fu原创 2015-10-14 13:22:35 · 746 阅读 · 0 评论 -
javascript冒泡排序为数组排序
var arr = [10,8,9,23,-1,2,33]; function sortArr(array) { for(var i = 0, len = arr.length; i < len; i++){ for(var j = i+1; j<len; j++){ var temp = array[i]; if(array[i] > array[j]) {原创 2015-12-22 21:35:36 · 467 阅读 · 0 评论 -
使用 str.indexOf(sourceStr,indexOffset) 匹配所有项
var source = 'asdf aa asdfv ass aaa asdff,dsfsd', result = getAllIndexOf(source,'aa'); function getAllIndexOf(sourceStr,filterStr) { var arr = []; var index = -1; while(sourceStr.indexOf(filt原创 2015-12-22 21:29:01 · 1302 阅读 · 0 评论 -
javascript 中 this 的指向
在函数中 this 指向 window(function whatThis() { console.log(this);})()输出结果:Window {speechSynthesis: SpeechSynthesis, caches: CacheStorage, localStorage: Storage, sessionStorage: Storage, webkitStorageInf...原创 2016-08-26 13:32:57 · 384 阅读 · 0 评论 -
开始 vue-cli webpack 打包工具的demo
在命令行执行如下语句npm install -g vue-clivue init webpack-simple my-projectcd my-projectnpm installnpm run dev以上步骤参考 点击打开链接完成以上步骤例子就可以跑起来了,npm install 可能会出问题,失败的同学可以去试试 cnpm如果 npm install 失败n原创 2016-12-23 16:59:57 · 2180 阅读 · 0 评论 -
简单的 Nodejs jade 实现Hello world
简单的 Nodejs + jade 实例原创 2016-09-07 14:20:22 · 1622 阅读 · 0 评论 -
js通过指定下标或指定元素进行删除数组
删除指定下标数组元素Array.prototype.del=function(index){ if(isNaN(index)||index>=this.length){ return false; } for(var i=0,n=0;i<this.length;i++){ if(this[i]!=th原创 2014-01-15 16:36:54 · 11482 阅读 · 0 评论