
js
一只特立独行的猫猫
有什么技术问题,欢迎大家一起交流,一起学习 如果人生旅途的道路一致,我愿为同行的你背起行囊
展开
-
8,理解对象
需要反复看的ECMAScript 6 专门为合并对象提供了 Object.assign()方法。这个方法接收一个目标对象和一个 1 或多个源对象作为参数,然后将每个源对象中可枚举(Object.propertyIsEnumerable()返回 true) 和自有(Object.hasOwnProperty()返回 true)属性复制到目标对象。以字符串和符号为键的属性 会被复制。对每个符合条件的属性,这个方法会使用源对象上的[[Get]]取得属性的值,然后使用目标 对象上的[[Set]]设置属性的值。原创 2021-08-25 11:22:17 · 134 阅读 · 0 评论 -
变量,作用域,内存
1,通过变量使用原始值 和引用值 原始值: 原始值有哪些类型? 引用值:2,理解执行上下文3,理解垃圾回收机制标记清理和引用计数。需要反复理解的部分4.1.3 传递参数ECMAScript 中所有函数的参数都是按值传递的。这意味着函数外的值会被复制到函数内部的参数 中,就像从一个变量复制到另一个变量一样。如果是原始值,那么就跟原始值变量的复制一样,如果是 引用值,那么就跟引用值变量的复制一样。对很多开发者来...原创 2021-08-22 20:17:48 · 122 阅读 · 0 评论 -
js 中,箭头函数和普通函数的区别
1,this指向的不同,箭头函数的this,是指函数定义时的this值,和怎么调用他都没关系普通函数的this是由“调用它所使用的引用”决定,调用函数时所使用的引用,决定了函数执行时的this值原创 2021-08-14 22:56:16 · 102 阅读 · 0 评论 -
AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解
AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解javascriptvue-clicommonjswebpackast发布于 2018-09-01抽象语法树(AST),是一个非常基础而重要的知识点,但国内的文档却几乎一片空白。本文将带大家从底层了解AST,并且通过发布一个小型前端工具,来带大家了解AST的强大功能Javascript就像一台精妙运作的机器,我们可以用它来完成一切天马行空的构思。我们对javascript生态了如指掌,却常忽视javas转载 2020-11-15 20:33:58 · 467 阅读 · 0 评论 -
JS函数节流和函数防抖
1.为什么需要函数防抖和函数节流?在浏览器中某些计算和处理要比其他的昂贵很多。例如DOM操作比起非DOM交互需要更多的内存和CPU占用时间。连续尝试进行过多的DOM操作可能会导致浏览器挂起,甚至崩溃; 例如当调整浏览器大小的时候,resize事件会连续触发;如果在resize事件处理程序内部尝试进行DOM操作,其高频率的更改可能会让浏览器崩溃; 为了绕开上面的问题,需要对该类函数进行节流;2.什么是函数防抖和函数节流防抖(debounce)和节流(throttle)都是用来控制某个函数转载 2020-09-17 13:52:17 · 145 阅读 · 0 评论 -
flex布局时 固定宽度被压缩不展示
最近项目使用flex时遇到的坑flex-shrink属性1、flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。.item { flex-shrink: <number>; /* default 1 */}2、如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。3、如果一个项目的flex-sh...转载 2020-01-08 16:53:54 · 2457 阅读 · 0 评论 -
js点击事件总报错onclick is not defined错误
今天写js方法,js点击事件总报错onclick is not defined错误,困扰很久。查询资料得以解决。正确写法如下:function funFormatter (value, rowData, rowIndex) {return "<a href='javacript:;' οnclick= selectUserDate('" + value + "');>" + va...转载 2019-12-12 11:04:38 · 1619 阅读 · 0 评论 -
有关日期之间的转换问题
这个是将2019-7-20 转化为 Sat Jul 20 2019 00:00:00 GMT+0800 (中国标准时间) 这样的时间console.log(new Date("2019-7-20".replace("-", "/").replace("-", "/")))Sat Jul 20 2019 00:00:00 GMT+0800 (中国标准时间)var date = new...转载 2019-11-27 11:30:25 · 457 阅读 · 0 评论 -
深拷贝 浅拷贝
深拷贝 就是 拷贝完之后, 修改原始的数据,也不对原来的数据进行影响浅拷贝 就是拷贝完之后,修改数据,会相对影响在实际开发中,如果大家共同开发一个项目,如果大家都同时对一个数据进行操作的时候,这样可能会造成数据污染,所以,需要先进行深拷贝,然后,在深拷贝的基础上,进行自己的业务操作下面就是一个深拷贝function deepClone (arr){ le...转载 2019-11-18 17:53:59 · 127 阅读 · 0 评论 -
js arrayreduce
var arr = [{a: "111", b: "1"},{a: "222", b:"1"},{a: "333", b:"0"}];var results = arr.reduce((results, item) => { if (item.b === '1') results.push(item.a) return results}, [])原创 2019-10-23 10:40:15 · 162 阅读 · 0 评论 -
setTimeout异步
同步任务和异步任务同步和异步操作的区别就是是否阻碍后续代码的执行。同步任务是那些没有被引擎挂起、在主线程上排队执行的任务。只有前一个任务执行完毕,才能执行后一个任务。异步任务是那些被引擎放在一边,不进入主线程、而进入任务队列的任务。只有引擎认为某个异步任务可以执行了(比如 Ajax 操作从服务器得到了结果)【发布订阅】,该任务(采用回调函数的形式)才会进入主线程执行。排在异步任务后面的...转载 2019-10-15 16:50:58 · 2988 阅读 · 1 评论 -
js ++ += 赋值的问题
原创 2019-10-09 10:13:01 · 220 阅读 · 0 评论 -
setTimeout setInterval 的误区和注意事项
setTimeout():在指定的毫秒数后调用函数或计算表达式,方法只执行一次。可以在中途使用 clearTimeout() 终止。 setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地执行,直到 clearInterval() 被调用或窗口被关闭。注意,两个方法的回调函数,都是经过指定毫秒数后被添加到事件/任务待处理队列中,而不是立即执行。即定时器...转载 2019-09-24 15:57:35 · 885 阅读 · 0 评论 -
setTimeout与setInterval的坑以及优缺点
说到setTimeout与setInrerval大家可能都觉得很easy,我刚接触js的也是这样的想法,可后来在知乎看到了一道题,大概好像是这样的:例一:setTimeout(function(){console.log("小马“);setTimeout(function(){arguments.callee;},1000);},1000)例二:setInterval(...转载 2019-09-24 15:54:32 · 654 阅读 · 0 评论 -
完美解决setInterval在浏览器切换时加速的问题
JavaScript中当我们切换浏览器的时候,setInterval会加快速度导致这个原因是:发现这是因为浏览器本着节省内存的性质,当切换到其他页面时,采油系统页面的定时器不运动,但是动画依然排列,当切换回来的时候,动画加速运动,出现错误,在轮播图之类的页面经常会发生这样的情况在这里我们需要用到以下三个知识点:document.onvisibilitychange :只要页面发生...转载 2019-09-24 10:49:04 · 3478 阅读 · 6 评论 -
js给json对象增加、删除、修改属性
<script type="text/javascript"> //json对象 var json={ "firstName":"Bill" , "lastName":"Gates"}; //给json对象添加新的属性并赋值 json.sex="man"; //也可以如下添加新的属转载 2018-08-16 10:28:33 · 21660 阅读 · 1 评论 -
js数组中的find、filter、forEach、map四个方法的详解和应用实例
数组中的find、filter、forEach、map四个语法很相近,为了方便记忆,真正的掌握它们的用法,所以就把它们总结在一起喽。find():返回通过测试的数组的第一个元素的值在第一次调用 callback 函数时会确定元素的索引范围,因此在 find 方法开始执行之后添加到数组的新元素将不会被 callback 函数访问到。如果数组中一个尚未被callback函数访问到的元素的值被c...转载 2018-08-31 10:47:20 · 189 阅读 · 0 评论 -
js 数字0.0000000061问题
主要是计算机在进行数字计算的时候,会将二进制先转换成十进制,最后,再将十进制转换成二进制,中间就会出错,所以,可以将数字乘以100,再除100,这样来解决这个问题...原创 2018-12-26 16:50:52 · 880 阅读 · 2 评论 -
js 验证只有数字的情况
昨天偶然发现parseInt方法还有第二个参数,第二个参数就是把第一个参数设置成用几进制,具体大家可以百度js parseInt原创 2018-12-27 09:32:49 · 675 阅读 · 0 评论 -
判读是否是对象,数组,字符串
const typeList = ['Object', 'Array', 'Function', 'Number', 'String', ''];const validate = (() => { let obj = {} for (let name of typeList) { obj[`is${name}`] = (originObj) ...原创 2018-12-29 10:47:52 · 386 阅读 · 0 评论 -
js中需要注意的知识点
(1)0== "" 这个表达式的结果是true(2)typeof的用法 ,typeof的返回值有string, number, object, undefined, bollean, function, 有几个我们需要注意一下 console.log(typeof(NaN)) // number console.log(typeof(null)) ...原创 2019-01-11 10:26:05 · 209 阅读 · 0 评论 -
js 小数相乘 四舍五入
今天工作遇到了这个问题,两个小数相乘,会得到小数点后很多位数的数,我想要的是得到一个正常的数字,然后进行四舍五入,来保存两位小数https://mathjs.org/index.html这个是我用到的科学计数法的插件先进性安装npm install mathjs代码用到的是如下两种(1)const math = require('mathjs')const...原创 2019-03-12 23:34:01 · 675 阅读 · 0 评论 -
四种常见的 POST 提交数据方式
提醒:本文最后更新于888天前,文中所描述的信息可能已发生改变,请谨慎使用。HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP ...转载 2019-04-22 15:05:27 · 3011 阅读 · 0 评论 -
setInterval的弊端和解决方案
在需要重复发送请求或者某些效果的时候,一般都会想到使用setInterval,但是它的一些弊端,会给程序带来很大的隐患一、弊端1.setInterval对自己调用的代码是否报错漠不关心。即使调用的代码报错了,它依然会持续的调用下去2.setInterval无视网络延迟。在使用ajax轮询服务器是否有新数据时,必定会有一些人会使用setInterval,然而无论网络状况如何,它都会去一遍...转载 2019-06-25 19:08:49 · 5208 阅读 · 2 评论 -
浅谈setInterval(aa,1000)与setInterval(aa(),1000)的区别
一直有个疑惑,在定时器上调用某个方法时,加括号和不加括号有什么区别。今天做了个实验,发现,不加括号定时器会每秒执行一次,加了括号只会执行一次,在一些浏览器上会报错,如IE,但一样会正常执行一次。这样写浏览器会正常运行,每秒打印一次。但如果加了个括号运行结果就只有一次并且在IE浏览器会报错,但依然会执行一次并且,如果全局范围内没有sw这个函数,只有变量的话,定时器不会执行。...转载 2019-06-25 19:11:24 · 895 阅读 · 0 评论 -
前端常用宽高
页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offsetWidth (包括边线的宽);网页可见区域高: document.body.offsetHeight (包括边线的宽);网页正文全文宽: document.body.scrollWidth;...原创 2019-06-18 16:36:01 · 449 阅读 · 0 评论 -
图片懒加载原理及实现
原理:先将img标签的src链接设为同一张图片(比如空白图片),然后给img标签设置自定义属性(比如 data-src),然后将真正的图片地址存储在data-src中,当JS监听到该图片元素进入可视窗口时,将自定义属性中的地址存储到src属性中。达到懒加载的效果。这样做能防止页面一次性向服务器发送大量请求,导致服务器响应面,页面卡顿崩溃等。实现:<!DOCTYPE html...转载 2019-07-03 15:07:01 · 385 阅读 · 0 评论 -
一个节点添加class,其余兄弟节点 移除class
function handleOnclick(){// if(to.nodeName !== "UL"){// to.classList.remove("visitedA");// to.setAttribute("class", "visitedA");// console.log(to)// console.log(to.parentNode.parentNode.c...原创 2019-08-12 23:57:52 · 4094 阅读 · 0 评论 -
for in循环对象时对对象值的操作,以及日期的格式化问题
下面这个for循环是按照key来遍历一个对象,在遍历的同时,对对象中的值进行操作,如果符合条件,就将符合条件的删除for(name in this.search){if(this.search[name] == '' || this.search[name] == '-1' || !this.search[name]){delete this.search[name];}}...原创 2018-07-24 20:17:30 · 680 阅读 · 0 评论