![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
文章平均质量分 55
三个木马人
这个作者很懒,什么都没留下…
展开
-
前端开发跨域问题解决
一、什么是跨域跨域是指没有建立信任关系的两个域之间进行通讯,出于安全考虑,浏览器默认是禁止的。跨域问题其实是浏览器的同源策略引起的。同源策略是一种约定,也是浏览器最核心最基本的安全功能;如果缺少同源策略,浏览器很容易受到 XSS、CSFR 等攻击。所谓的同源是指:协议、域名、端口 三者都相同。如果有一个不同就是不同源,也就属于跨域。同源策略限制了下面几种行为:cookie、localStorage、indexDB 无法读取DOM 和 JS 对象无法获取AJAX 请求无法发送二、跨域问题原创 2021-05-08 18:05:25 · 1695 阅读 · 9 评论 -
js 类数组转成真正的数组的方法
一、类数组与数组的区别相同点:都有 length 属性,都可以用下标访问每一个元素不同点:数组的类型是 Array ,类数组的类似是 Object类数组不具备数组所具备的所有方法类数组只能用 for 循环来遍历例://下来这个就是一个类数组obj = { 0:'1', 1:'2', length:2}二、类数组转化为真的数组1、使用拓展运算符(ES6)let arr = [...obj];2、Array.from(arr)(ES6)let arr = Arra原创 2021-04-08 18:34:09 · 1943 阅读 · 4 评论 -
bind、call、apply 的区别、使用及实现
一、首先来看一下他们的区别相同点:这三个 api 都可以改变 this 的指向第一个参数都是 this 指向的对象如果第一个参数是 null undefined ,则函数的 this 不改变都可以传递参数不同点:1、call 和 apply 都可以对函数进行直接调用,bind 方法返回的是一个函数,需要手动调用函数let obj= { name:'小米', print(){ console.log(`${this.name}`) }}let obj1 = { name:'原创 2021-04-08 16:01:44 · 1765 阅读 · 1 评论 -
js 实现模糊搜索功能
最近遇到一个需要前端对已有数据做模糊查询的功能。方法有很多种,个人比较推荐使用正则表达式来实现,下面是我实现的方法:封装一个公用的方法://list 是已有的数据,search 是模糊搜索的关键字export function fuzzySearch(list,search){ let data = []; if(list.length != 0 && search){ let str = `\S*${search}\S*`; let reg = new RegExp(st原创 2021-03-24 15:14:03 · 4025 阅读 · 3 评论 -
Object.assign() 的用法
该方法用于将所有可枚举属性的值从一个或多个源对象(sources)分配到目标对象(target),并返回目标对象。Object.assign(target, ...sources)一、对象的拷贝const target = { a: 1, b: 2 };const source1 = { b: 4, c: 5 };const source2 = { b: 6, c: 7 };const obj = Object.assign(target,source1,source2);console.l原创 2021-01-20 17:39:02 · 23500 阅读 · 0 评论 -
javescript 字符串生成 hash 值
用来对比字符串是否一致,一般是判断已有文本是否被再次编辑。function hashVal(string){ var hash = 0, i, chr; if (string.length === 0) return hash; for (i = 0; i < string.length; i++) { chr = string.charCodeAt(i); hash = ((hash << 5) - hash) + chr; hash |= 0; // Convert to原创 2021-01-13 14:59:02 · 3318 阅读 · 0 评论 -
javascript的this指向问题
关于this指向问题一直是js基础的热门问题,最近参与公司面试问过很多面试者总觉得有点模糊。所以自己想着总结一下:this的指向在函数定义的时候是确定不了的,只有在函数执行的时候,指向调用它的对象。一、全局环境在全局环境中,this都是指向全局对象windowconsole.log(this); //window二、函数环境1、普通函数普通函数调用是window的调用,this 指向window。function fn(){ console.log(this);//window ,严格模原创 2020-12-11 18:10:53 · 1080 阅读 · 0 评论 -
javascript 实现下载的几种方法
我们在项目开发过程中,经常会遇到下载功能;基于我使用过的方法做了一个总结,然后写下这篇文章作为记录!一、使用 a 标签(get请求)a标签是最简单的方法,只需要把 文件的地址 或 接口 给 a 标签的 href 属性,可以为 a 标签添加 download 属性来指定下载的文件名;可省略download 属性,如果省略浏览器会自动识别源文件名。<a href="文件地址" download='文件名'>下载</a> //url 文件地址 或 接口地址function d原创 2020-12-31 17:06:19 · 13527 阅读 · 0 评论 -
js正则表达式报错xxx.test is not a function
今天与后端调接口,有一个需求是后端接口给我一个正则表达式,让我用这个表达式校验输入的值是不是正确,然后就遇到这个问题:报错 xxx.test is not a function后端传过来的正则表达式一般是一个字符串:let reg = '/^[1-9]\d*$/'; //匹配正整数而正则表达式正确的格式是let reg = /^[1-9]\d*$/; //匹配正整数所以后端传给我们的这个正则是无法直接使用的,解决方法就是利用 RegExp 重新 new 一个正确格式的正则表达式出来:let原创 2020-12-25 17:42:11 · 4248 阅读 · 0 评论 -
关于js 0.1 + 0.2 != 0.3 的问题
关于js 0.1 + 0.2 != 0.3 的问题问题:console.log(0.1 + 0.2 == 0.3) // false最近又看了一下《javaScript高级程序设计》这本书,看到书里面这样一个问题。经过整理和个人理解在这里记录一下。分析问题原因:我们日常使用的数字是10进制的数,而计算机使用的是2进制的数字。不是所有的小数都能用2进制来准确的表达出来,把0.1 和 0.2 转化为2进制的话是一个无限循环的小数,计算机来处理这件事情的时候把最接近0.1和最接近0.2的小数加在一起然后返原创 2020-12-04 15:02:53 · 1115 阅读 · 0 评论