
javascript
文章平均质量分 59
Bil!
一个自学的IT菜鸟。
展开
-
前端跨域方案看这篇就够了
为了加快请求响应时间,服务器进行分布式布局,将服务器分为:web服务器:用于处理静态资源data服务器:业务逻辑和数据分析图片服务器协议域名端口号导致需要用到跨域请求。通过没有同源策略限制的Html标签实现数据请求。在客户端建一个服务器代理。请求加上access-control-change- 请求头。使用websocket协议。原创 2022-09-19 20:31:33 · 1581 阅读 · 1 评论 -
从一道面试题看函数柯里化
前端面试问到闭包的作用,一般会说模块化及变量封装以及延长局部变量生命周期。函数柯里化一般需要延长局部变量生命周期,就用到闭包。sum(1 , 2) // 3 sum(1)(2) // 3 sum(1 , 2)(3)(4) // 10 //怎样的柯里化能实现这个sum函数开始我知道柯里化需要保存中间值,于是写出以下的代码。i < len;i ++) {运行结果:结果显示这个函数不能循环调用。可是如果返回argument.callee那么能循环调用,可是不能知道每次调用完最终的值。原创 2022-09-18 12:04:35 · 397 阅读 · 1 评论 -
从loadsh源码看JS判别数据类型
判别数据类型一般会想到typeof 这个方法。但是该方法只能判别原始数据类型。console.log(typeof "a");//stringlet str = new String("a")console.log(typeof str);//objectconsole.log(typeof Symbol('foo'));//symbolconsole.log(typeof undefined);//undefined//null 是原始值类型,但得到的是object。在《你不知道的JavaS原创 2022-04-09 13:43:17 · 1064 阅读 · 0 评论 -
从lodash源码看对象深拷贝
最简单实现对象深拷贝的方式通过json完成,但是只能处理json类型的数据。原因是JSON在执行字符串化的这个过程时,会先进行一个JSON格式化,获得安全的JSON值,因此如果是非安全的JSON值,就会被丢弃掉。其中undefined、function、symbol这三种类型的值就是非安全的(包括该对象的属性循环赋值该对象),所以格式化后,就被过滤掉了,而set、map这种数据格式的对象,也并没有被正确处理,而是处理成了一个空对象。var data = { a: "123",原创 2022-04-03 16:44:49 · 1679 阅读 · 0 评论 -
从lodash源码看数组扁平化实现
lodash源码import isFlattenable from './isFlattenable.js'/** * The base implementation of `flatten` with support for restricting flattening. * * @private * @param {Array} array The array to flatten. * @param {number} depth The maximum recursion depth.原创 2022-03-28 19:28:13 · 3074 阅读 · 0 评论 -
Failed to execute ‘postMessage‘ on ‘DOMWindow‘: The target origin provided (‘http://127.0.0.1:1001‘)
以下HTML在http://127.0.0.1:1001下运行,我们打算通过postMessage() 跨域与http://127.0.0.1:1002/1002.html进行通信:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta n原创 2021-08-10 16:07:27 · 10304 阅读 · 3 评论 -
ajax_jquery、fetch和axios最基本用法
jquery// 基本用法无参数get请求$.ajax({ url:"demo_test.txt", success:function(result){ console.log(result); }}// 需指定方法则增加method字段$.ajax({ url:"demo_test.txt", method:"POST", success:function(result){ console.log(result); }原创 2021-04-25 09:34:28 · 154 阅读 · 0 评论 -
防抖函数在Vue中使用
防抖函数作用:在函数调用非常频繁的时候,设置防抖规定该函数在一段时间内只可以执行一次。提升网页性能。防抖函数代码:export function debounce(func,delay){//函数的防抖,该函数的返回值是一个函数 let timer = null; return function (...args){ if(timer) clearTimeout(timer); //清上一次的计数器 timer = setTimeout(() =>{ fun原创 2021-04-14 21:23:05 · 3796 阅读 · 1 评论 -
js中Symbol数据类型笔记
Symbol作为构造函数以及Symbol()的方法用法:let a1 = Symbol("lvzy");let a2 = Symbol("lvzy");console.log(a1 === a2); //false//输出Symbol的描述console.log(a1.description); //lvzy//使用Symbol.for() 和 直接使用Symbol() 看着好像没有什么区别//其实Symbol.for 会在内存当中帮我们记录,那么下次再用Symbol.for()//定原创 2021-02-02 21:11:06 · 252 阅读 · 0 评论 -
JavaScript 正则表达式笔记
正则表达式有很多规则,我认为看懂这些规则才有可能看懂正则表达式。以下是正则表达的规则:正则表达式修饰符修饰符可以在全局搜索中不区分大小写:修饰符 描述 i 执行对大小写不敏感的匹配。 g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 m 执行多行匹配。 正则表达式模式方括号用于查找某个范围内的字符:表达式 描述 [abc] 查找方括号之间的任何字符。 [0-9] 查找任何从 0 至 9 的数字。...原创 2020-12-26 16:13:47 · 465 阅读 · 0 评论 -
JS中常见的高阶函数
高阶函数:英文叫Higher-order function。JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。一、filter其中该函数的参数是一个函数,filter函数的返回值是一个数组。filter中的回调函数有一个要求,必须返回一个booleantrue:当返回true时,函数内部会自动将这次回调的n加入到新的数组中false:当返回false时,函数内部会过滤掉这次的ncons原创 2020-12-17 15:05:18 · 3176 阅读 · 0 评论