javascript
文章平均质量分 56
景尘
高山景行,一尘不染
展开
-
Nunjucks简单入门
1、页面全局变量<script type="text/javascript"> try { ____json4fe = {{ other.json4fe | dump | safe }}; }catch (err) { console.warn("__wuba_list_model parse error: ", err); }</script>2、‘if‘有多个‘和‘或‘或‘条件{% if (item.t原创 2021-04-30 15:15:24 · 333 阅读 · 1 评论 -
JavaScript中事件循环的理解 Event Loop
为了解决单线程运行阻塞问题,JavaScript用到了计算机系统的一种运行机制,这种机制就叫做事件循环(Event Loop)事件循环(Event Loop)在JavaScript中,所有的任务都可以分为:同步任务:立即执行的任务,同步任务一般会直接进入到主线程中执行 异步任务:异步执行的任务,比如ajax网络请求,setTimeout定时函数等同步任务进入主线程,即主执行栈,异步任务进入任务队列,主线程内的任务执行完毕为空,会去任务队列读取对应的任务,推入主线程执行。上述过程的不断重复就是原创 2021-03-05 10:02:48 · 405 阅读 · 1 评论 -
js知识点整理
1、如何实现继承?继承方式有哪些?class类继承 完美 原型链继承 缺点:内存空间是共享的,基本数据类型字符串没有跟着发生变化,但是引用类型的值会跟着变化 构造函数继承 缺点:能继承父类的实例属性和方法,不能继承原型属性或者方法 组合继承(原型链和构造函数组合)缺点: 拷贝继承、深拷贝浅拷贝详细介绍见:https://liulibin.blog.csdn.net/article/details/114361886...原创 2021-03-04 17:09:41 · 399 阅读 · 1 评论 -
js 校验输入的网址是否正确
工作中遇到校验网址是否正确,查了好多方法发现实现不了复杂的校验,最后定的规则是校验是不是以https://或http://开头方法一: let url = URL.slice(0,8); console.log(url) if(url.indexOf('https://') != -1 || url.indexOf('http://') ...原创 2018-07-25 16:28:28 · 10330 阅读 · 0 评论 -
Js实现在数组内多个删除 Js数组内多个对象删除
// arr1:原数组 arr2:重复的项 function removePointById(arr1, arr2) { for (let i = 0; i < arr2.length; i++) { for (let j = 0; j < arr1.length; j++) { ...原创 2020-01-08 16:27:11 · 438 阅读 · 0 评论 -
原生ajax封装请求
// 封装ajaxfunction ajax(obj) { //1.创建ajax对象 var xhr if (window.XMLHttpRequest) { // 支持此对象 xhr = new XMLHttpRequest() //IE7以上浏览器 } else { xhr...原创 2019-03-27 09:35:57 · 278 阅读 · 0 评论 -
JS 中 ++i 和 i++的区别
++i 和 i++ 其实都是 i=i+1;但是:var a ;a = i ++ //将i的值赋给a , 即a = i,之后再执行i = i + 1;a = ++ i //将i+1 的值赋给a,即a = i + 1 ,之后再执行i = i + 1;总结:1:后置++ 是将自身的值赋给变量,之后自身再加1; 2:前置++ 是将自身+1 后的值赋给变量,同时自身加1;例...原创 2019-01-23 10:40:40 · 495 阅读 · 0 评论 -
js 判断是windows和苹果浏览器
let isMac = /macintosh|mac os x/i.test(navigator.userAgent); //苹果/windows|win32/i.test(navigator.userAgent);//Windows/linux/i.test(navigator.userAgent);//Linux原创 2019-01-21 17:51:55 · 1904 阅读 · 0 评论 -
js性能优化整理
1、多个变量声明//避免var i=2;var j='hello';var arr=[1,3,2]//提倡var i=2, j='hello', arr=[1,3,2]2、插入迭代值//避免var name = values[i];i++//提倡var name = values[i++]3、使用数组和对象字面量,避免使用构造函数Array(...原创 2019-01-02 17:40:26 · 188 阅读 · 0 评论 -
js 现给数字加三位一逗号间隔的种方法
思想:不论是几位加逗号,首先变成字符串,获取长度,除以位数,得到整数a,和余数,接下来就是循环,字符串截取对应的加‘,’,其实还有要熟练掌握数组和字符串的各种方法,对应这周小的算法还是可以很快实现的,希望对你有帮助! function getResult(num) { if (num && num !== null) { var n...原创 2018-12-26 10:39:14 · 1737 阅读 · 2 评论 -
JS中onclick与addEventListener绑定事件的区别
onclick()方式 window.onload = function() { var oDIV= document.getElementById("#div") oDIV.onclick = function() { console.log("第一次onclick...原创 2018-12-30 16:05:00 · 534 阅读 · 0 评论 -
浅谈面向对象
1、工厂模式 function createPerson(name, age, job) { var o = new Object() o.name = name o.age = age o.job = job o.sayName = function() { console.log(t...原创 2018-12-30 15:06:00 · 115 阅读 · 0 评论 -
js中call apply方法的使用介绍
举一个具体的例子 function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1); 这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js ...转载 2018-12-28 18:54:04 · 177 阅读 · 0 评论 -
H5标签input标签上传文件
<input type="file" name="batchList" onchange="uploadImg()" id="batchList" />function uploadImg() { if ($("#batchList").val() == "") { console.log(&quo原创 2019-02-25 11:26:26 · 921 阅读 · 0 评论 -
input复选框获取选中的值
好久没有用原生了,已经忘得差不多了,简单整理一下:getDataLists(); function getDataLists() { console.log(789) var data = [ { id: '01', ...原创 2019-02-20 10:37:44 · 1443 阅读 · 0 评论 -
什么是js深拷贝和浅拷贝及其实现方式
浅拷贝:对象复制只是复制的对象的引用,可以改变原始对象的值深拷贝:彻底copy一个对象,而不是copy对象的引用,不可改变如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。浅拷贝的实现方式:1、可以通过简单的赋值实现function simpleClone(i...原创 2019-03-12 16:03:28 · 332 阅读 · 0 评论 -
关系图d3、封装js
demo:https://github.com/binliuli/visual.git有的时候需要自己封装js所谓的组件,参考:使用 data-* 属性来嵌入自定义数据list:visual:代码:html:<html><head> <meta charset="utf-8"> <title>...原创 2019-03-25 14:25:35 · 1949 阅读 · 0 评论 -
AJAX中出现两次请求,OPTIONS请求和GET/POST请求
虽然知道请求种类有 HEAD、GET、PUT、POST、DELETE、OPTIONS等,但是基本上用到的大多都是GET、PUT、POST、DELETE。前几天查看network请求时意外发现本地环境跑公司项目的时候,每次POST之前,都偷偷给我来一次没有返回的OPTIONS请求。原来在 CORS-跨域资源共享 中,可以使用 OPTIONS 方法发起一个预检请求,以检测实际请求是否可以被服...原创 2019-04-10 14:03:44 · 2115 阅读 · 0 评论 -
js获取js文件传入的参数
有的时候我们在封装js的时候需要通过引入的js文件传递参数<div id='d4'> <script src="./js/test.js?id=d4&type=visual&width=1000&height=800" id="testjs"></script></div>获取方法封装:fun...原创 2019-04-03 14:27:52 · 3406 阅读 · 0 评论 -
数据类型
js中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有一种复杂数据类型--Object,Object本质上是由一组无序的名值对组成的。js不支持任何创建自定义类型的机制,而所有值最终都将是以上6种数据类型之一。typeof操作符Undefined ---如果这个值未定义 boolean --- 如果这个值是布尔值 ...原创 2019-06-18 14:12:16 · 122 阅读 · 0 评论 -
isNaN()函数
NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括本身,例如:alert(NaN==NaN) //false针对这两个特点,定义了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接受一个值后之后,会尝...原创 2019-06-18 15:58:33 · 5439 阅读 · 0 评论 -
js数组去重
1、遍历数组,并结合 indexOf 来排除重复项var oldArr = [] for (var i = 0; i < 100000; i++) { oldArr.push(i) } var start = new Date().getTime() console.log('开始', start)...原创 2019-08-31 15:26:32 · 175 阅读 · 0 评论 -
js处理价格分布的数据echart
var data = [ {sort:1,count:5}, {sort:2,count:7}, {sort:3,count:6}, ]//变成下面这样[ [1,5],[2,7],[3,6]] let similarData = [];for (let i = data.length; i--; ) { ...原创 2018-12-11 14:47:33 · 307 阅读 · 0 评论 -
字符串和数组方法简单整理
原创 2018-12-26 18:00:37 · 202 阅读 · 0 评论 -
js数组拷贝
1、for循环实现拷贝。 var arr = [1, 2, 3, 4, 5] var arr2 = copyArr(arr) function copyArr(arr) { let res = [] for (let i = 0; i < arr.length; i++) { res.push(arr[i]) ...原创 2018-07-28 11:19:01 · 695 阅读 · 0 评论 -
js数组的方法详解
js数组的方法有:join(),push() 和pop(),shift() 和 unshift(),sort(),reverse(),concat(),slice(),splice(),indexOf() 和 lastIndexOf()( ES5新增),forEach()( ES5新增),map()( ES5新增),filter()( ES5新增),every()( ES5新增),some()...原创 2018-07-27 16:28:42 · 387 阅读 · 0 评论 -
js字符串的方法及详解
// 1、charAt 返回指定索引出的字符 var str = "asdfghjk"; var s = str.charAt(1) console.log(s) // s // 2. 判断一个字符第一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1 str.indexOf('q') //-1 str.indexOf('...原创 2018-07-27 15:02:43 · 501 阅读 · 0 评论 -
export和import的用法
export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。1、输出变量:第一种:export var firstName = 'Michael';export var lastName = 'Jackson';export var year = 1958;第二种:(应该优先考虑使用这种写法。因为这样就可以在脚本尾部,一眼看清楚输出了哪些变量)v...原创 2018-07-30 15:54:10 · 8743 阅读 · 3 评论 -
浅谈arguments
arguments 是一个对应于传递给函数的参数的类数组对象arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。 arguments对象不是一个 Array 。它类似于Array,但除了length属性和索引元素之外没有任何Array属性。 例如,它没有 pop 方法。但...原创 2018-07-30 14:47:52 · 365 阅读 · 0 评论 -
for、forEach( )和map的性能方面
for循环是在有js的时候就有了,forEach和map是es5的时候出来的,单纯从性能上说,map和forEach方法是远远落后for语句的。for性能最好,其次是forEach,再者是map。map方法和forEach方法类似,都是对数组进行循环,数组中每一个成员,都被其回调函数处理一次。区别在于map有返回值,而forEach没有返回值。var arr = [1,2,3,4,5...原创 2018-07-30 14:13:50 · 6570 阅读 · 0 评论 -
js判断一个数字是否是整数
首先判断这个数字是不是numbervar a=2;console.log(!isNaN(a))再使用余数运算判断任何整数都会被1整除,即余数是0。利用这个规则来判断是否是整数。var a=4console.log(a%1 === 0)下面是封装的方法function isInteger(num) { if (!isNaN(num) &&...原创 2018-07-26 16:28:11 · 16359 阅读 · 0 评论 -
浏览器缓存问题
不论面试还是工作中,经常遇到浏览器缓存的问题,例如,样式图片等改好了,也提交了,用户那边还是未解决,你可以在webpack里面配置一下,加hash值,每次输出的文件名不一样,浏览器就会重新加载。找到你的webpack.base.conf.js文件输出的地方chunkFilename: 'chunk[id].js?[chunkhash]',filename: '[name][hash:8...原创 2018-07-18 17:41:05 · 241 阅读 · 0 评论 -
JQuery ajax 交互
//jquery 的ajax$.ajax({url: '',//路径data: {},//这就是带着数据,去后台拿数据,简单例子:{}/*{id:"11111",content:"aaaa" 这里的id content 是问后台得到的,意思是后台要什么数据你就传给他什么数据 11111 aaaaa 是你前端给的}*/type: 'get',//这原创 2017-07-14 09:37:00 · 307 阅读 · 0 评论 -
js对象拷贝
1、万能的for循环实现对象的浅拷贝仅仅复制对象的引用,而不是对象本身。给子对象的数组类型的属性添加一个新值,父对象的该属性值也被篡改。 var obj = { name: 'FungLeo', sex: 'man', old: '18' } var obj2 = copyObj(obj) function copy...原创 2018-07-28 11:20:31 · 1655 阅读 · 0 评论 -
js 判断是否是iphoneX
//识别苹果X function isIphoneX() { return /iphone/gi.test(navigator.userAgent) && (screen.height == 812 && screen.width == 375) }if (isIphoneX()) { //为iphoneX }...原创 2018-07-24 15:46:49 · 2780 阅读 · 0 评论 -
浅谈面向对象
什么是面向对象?1、面向对象有三大特性:封装、继承、多态面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。面向过程的解决方法开门(冰箱); 装进(冰箱,大象); 关门(冰箱)。面向对象的解决...原创 2018-08-02 16:33:11 · 589 阅读 · 0 评论 -
JavaScript数组去重
1、利用数组的indexOf下标属性来查询function unique4(arr){ var res = []; for(var i=0; i<arr.length; i++){ if(res.indexOf(arr[i]) == -1){ res.push(arr[i]); } } return res;}2、利用对象属性存在的特性,如果没有该属性则存入...原创 2018-12-04 11:14:01 · 198 阅读 · 0 评论 -
0.1+0.2不等于0.3
在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!==0.3,在JavaScript中的二进制的浮点数0.1和0.2并不是十分精确,在他们相加的结果并非正好等于0.3,而是一个比较接近的数字 0.30000000000000004 ,所以条件判断结果为false。原因很简单,因为0.1存储的值比实际值大了一点,0.2也是大了一点(差值比...原创 2018-11-05 10:35:45 · 540 阅读 · 0 评论 -
不借助临时变量,进行两个整数的交换
举例:输入 a = 6, b = 2 输出 a = 2, b =6 var a = 6; var b = 2; b = a - b; //b=4 a = a - b // a=2 b = a + b //b=6 console.log(a, b)原创 2018-11-02 14:23:35 · 1428 阅读 · 0 评论 -
排序
排序方法很多,以下是冒泡排序: // 冒泡排序 var arr = [1, 5, 2, 6, 4]; var newArr = [] for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] &g...原创 2018-11-02 14:17:35 · 167 阅读 · 0 评论