javascript
文章平均质量分 79
等不回天亮等时光
一个会一点php node和切页面的前端工程师
展开
-
js中关于递归与回溯
关于js递归操作原创 2022-07-26 11:49:30 · 700 阅读 · 1 评论 -
我所理解的proxy
1.基本用法以上的代码为最基本的用法,主要知识点在于new Proxy接受两个参数,一个为目标元素,第二个参数为object,其中该object包含了set和get方法。或许会产生了一下的疑问:1.1 Receiver在get函数内部中我们可以看到 receiver === proxy 是为true的,那么在这个时候,就隐约感觉到它和this上下文有这关系。当我们在get函数中输出了this,此时的this是指向当前的对象(不是proxy对象,而是当前定义的set和get对象)接下来在看个例子:原创 2022-06-20 01:02:46 · 928 阅读 · 0 评论 -
我在lodash库中学习javascript编码技巧(dropRight)
鲁迅说过:只有阅读过优秀库源码的人,才能配的上是真正的勇士。dropRight创建一个切片数组,去除array尾部的n个元素。(n默认值为1。)_.dropRight([1, 2, 3]);// => [1, 2] _.dropRight([1, 2, 3], 2);// => [1] _.dropRight([1, 2, 3], 5);// => [] _.dropRight([1, 2, 3], 0);// => [1, 2, 3]funct.原创 2022-04-26 11:33:48 · 226 阅读 · 0 评论 -
我在lodash库中学习javascript编码技巧(difference)
鲁迅说过:只有阅读过优秀库源码的人,才能配的上是真正的勇士。difference创建一个具有唯一array值的数组,每个值不包含在其他给定的数组中。(注:即创建一个新数组,这个数组中的值,为第一个数字(array 参数)排除了给定数组中的值。)该方法使用SameValueZero做相等比较。结果值的顺序是由第一个数组中的顺序确定。换句话来说这个函数能够对比两个数组,并且以第一个参数数组为目标数组,第二个参数数组为过滤数组,最后返回过滤后的数据。function difference(arra.原创 2021-10-08 14:31:56 · 213 阅读 · 0 评论 -
阅读lodash源码之旅数组方法篇-compact和concat
鲁迅说过:只有阅读过优秀库源码的人,才能配的上是真正的勇士。compact创建一个新数组,包含原数组中所有的非假值元素。例如false, null,0, “”, undefined, 和 NaN 都是被认为是“假值”。注意以上的描述并不包括[],{}因为在js中,这个两个会进行隐式转换会把这两个值转换成为true。换句话来说该函数并不会去过滤这两个值。官方代码:export function compact(array){ let resIndex = 0; const result.原创 2021-01-24 11:59:27 · 203 阅读 · 0 评论 -
阅读lodash源码之旅数组方法篇-chunk
作用和用法将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。用法:_.chunk(array, [size=1])array (Array): 需要处理的数组[size=1] (number): 每个数组区块的长度demo:_.chunk(['a', 'b', 'c', 'd'], 2);// => [['a', 'b'], ['c', 'd']] _.chunk原创 2021-01-05 15:54:53 · 509 阅读 · 0 评论 -
js中操作树结构的数据
现在前端操作树的数据结构还是挺常见的,我在这里总结一下js树形结构常见的操作方式。我也把它做成了工具类库,github地址。一.遍历树结构的方式假设现在有如下的数据结构,我们需要去找到树结构的中某个对象的数据,常见的操作方式应该是用递归进行遍历查找,我认为这是最基本应该能想到的。let tree = [ { id: '1', title: '节点1', children: [ { id: '1-1', title: '节点1-1'原创 2020-12-12 23:53:41 · 4404 阅读 · 2 评论 -
比较两个js数组对象是否相等
假设现在有两个以下的数组let arr1 = [1,2,3,4]let arr2 = [1,2,3,5]你现在需要去比较这两个数组是否相等原创 2020-08-31 11:18:35 · 1959 阅读 · 0 评论 -
vue实现折叠组件-collapse
相信大家对于下面的列表形式应该不陌生吧,至少我个人在后台OA系统的时候就用到了,那么我来聊下这样形式的列表,应该怎么封装成为一个公共的组件。(代码参考了iview用于个人学习之用)一.列表组件参数设置每一个公共组件都应该约定好参数,定义好回调函数所传递参数。不应该与业务组件和业务逻辑相互耦合。这个组件的约定参数和使用方法如下: <Collapse v-model="value1" @...原创 2019-11-09 22:57:45 · 13977 阅读 · 0 评论 -
关于浅拷贝和深拷贝的理解
在聊深拷贝和浅拷贝之前,我们先来看看以下这几个场景: let obj1 = { a: 1, b: 2 }; let obj2 = obj1; obj2.a = 3; console.log(obj1.a); //3 let a = "ceshi"; let b = a; b = "ceshi1"; console...原创 2019-07-22 11:02:41 · 281 阅读 · 0 评论 -
一个树形结构所引发的思考
今天碰到了一个这样的数据结构,如下:var cityData = [{ id: 1, name: '广东省', children: [{ id: 11, name: '深圳', children: [{ id: 111, ...原创 2019-04-17 10:11:26 · 273 阅读 · 0 评论 -
原生js实现封装jquery(1)
虽然目前市面上jquery基本很少有公司使用(旧项目除外),基本上都是在使用MVVM框架,而我本人也是使用vue比较频繁。但是jquery里面实现的原理还是值得去学习和借鉴。那么我现在来记录一下我所封装jquery的一个过程。假设有以下的DOM节点,我先使用对象方法的形式来获取节点 &amp;lt;div id=&quot;box&quot;&amp;gt;box&amp;lt;/div&amp;gt;原创 2019-02-18 23:54:18 · 719 阅读 · 0 评论 -
ajax的步骤与封装ajax
今天和大家聊下如何ajax的工作原理和如何封装ajax. 1.什么是ajax Ajax技术核心是XMLHttpRequest对象(简称XHR),这是由微软首先引入的一个特性,其他浏览器提供商后来都提供了相同的实现。在XHR出现之前,Ajax式的通信必须借助一些hack手段来实现,大多数是使用隐藏的框架或内嵌框架。 简单来说,它是一门与服务端进行数据交换的技术。 2.何为同步...原创 2018-09-02 17:44:47 · 787 阅读 · 0 评论 -
关于javascript面向对象和原型
ECMAScript有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但是,ECMAScript没有类的概念,因此它的对象也与基于类的语言中的对象有所不同。二.创建对象创建一个对象,然后给这个对象新建属性和方法。var box = new Object(); ...原创 2018-07-01 19:21:47 · 204 阅读 · 0 评论 -
关于javascript中变量,作用域及内存
1.基本类型和引用类型的值ECMAScript变量可能包含两种不同的数据类型的值:基本类型值和引用类型值。基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。而引用类型值则是指那些保存在堆内存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。将一个值赋给变量时,解析器必须确定这个值是基本类型值,还是引用类型值。基本类...原创 2018-06-24 12:17:31 · 185 阅读 · 0 评论 -
关于javascript中的funtion类型
在ECMAScript中,Function(函数)类型实际上是对象。每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针。1.普通函数的声明function box(num1,num2){ return num1+num2}console.log(box(4,5))//9这种的函数声明是最为常...原创 2018-06-21 20:08:58 · 555 阅读 · 0 评论