js
文章平均质量分 80
maktubK
这个作者很懒,什么都没留下…
展开
-
JS 模块化规范
JS 模块化什么是模块化?将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起模块化的好处1.提高复用性2.高可维护3.更好的分离,按需加载4.避免命名冲突模块化的缺点1.增加请求2.依赖过多3.难以维护CommonJS说明在服务器端: 模块的加载是运行时同步加载的在浏览器端: 模块需要提前编译打包处理 (依赖Browserify)基本语法## 暴露//文件中会生成module对象,exports === module.export原创 2021-02-26 14:12:56 · 193 阅读 · 0 评论 -
JS 基础篇(十) cookie封装
cookie简单介绍cookie的特点1.cookie一般有大小限制为4kb,2.限制同一域名数量为50个3.读取有域名限制4.时效性cookie 使用//添加cookiedocument.cookie = “key=value”; // 一次写入一个键值对//读取cookie document.cookie //获得所有cookie 分号分割//expires 时效document.cookie = `${key}=${value};${expires}=${expires原创 2020-12-09 21:48:45 · 111 阅读 · 0 评论 -
JS 基础篇(九) 函数防抖和函数节流
函数防抖函数防抖:高频率触发的时候,只执行一次,第一次或者最后一次。重点在只执行一次。应用场景1. 手机号、邮箱输入检测2. 搜索框搜索输入(只需最后一次输入完后,再放松Ajax请求)3. 窗口大小resize(只需窗口调整完成后,计算窗口大小,防止重复渲染)4. 滚动事件scroll(只需执行触发的最后一次滚动事件的处理程序)5. 文本输入的验证(连续输入文字后发送 AJAX 请求进行验证,(停止输入后)验证一次就好codecss<style> .conte原创 2020-12-07 22:33:15 · 239 阅读 · 0 评论 -
JS 基础篇(八) 深拷贝与浅拷贝
前提堆栈的概念在javascript中,Object,Array,Function是放到堆中,Number,String,Null,Boolean存放在栈中指针个人理解像一个内存地址,指向了数据存放的堆中数据存储关于堆栈以后会细说浅拷贝浅拷贝就是赋值了一份内存地址而已,而内存中的数据并没有复制一份,任何一个数据改变两个数据都会改变看图:let obj = {a:1,b:2}let copyObj = objcopyObj.a = 'kk'console.lo原创 2020-12-07 15:40:20 · 86 阅读 · 0 评论 -
JS 数组篇 数组排序方法总结
生成乱序数组function arrRandom() { let arr = []; for (let i = 0; i < 10; i++) { let num = parseInt(Math.random() * 500); arr.push(num); } return arr;}sort()/* *sort 排序 */let arr = arrRandom();arr.sort((a, b) => a - b);console.log(原创 2020-12-07 10:23:04 · 165 阅读 · 0 评论 -
JS 循环遍历总结
for介绍for 语句用于创建一个循环,它包含了三个可选的表达式,这三个表达式被包围在圆括号之中,使用分号分隔,后跟一个用于在循环中执行的语句(通常是一个块语句)。示例var i = 0;for (; i < 9; i++) { console.log(i); // more statements}for…in介绍1.for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。2.for ... in是为遍历对象属性而构建的,不建议原创 2020-11-26 00:19:09 · 140 阅读 · 0 评论 -
JS 数组篇 多维数组扁平化
概念:数组扁平化是指将一个多维数组变为一维数组思想:遍历数组每一项,如果该项为数组,方法总结let arr = [1,2,3,['a','b'],[[4],[[[5,6],'c']]]]Array.prototype.flatconst arr1 = [0, 1, 2, [3, 4]];console.log(arr1.flat());// expected output: [0, 1, 2, 3, 4]const arr2 = [0, 1, 2, [[[3, 4]]]];conso原创 2020-11-25 23:23:53 · 510 阅读 · 0 评论 -
JS 数组篇 数组求和与数组去重
数组求和for循环求和 let arr = [1,2,3,4,5] function sum(arr){ let sum = 0; for(let index = 0;index<arr.length;index++){ sum += arr[index] } return sum } console.log(sum(arr))map-reduce求和let arr = [1,2,3,4,5]function sumMap(arr){原创 2020-11-24 17:47:38 · 428 阅读 · 0 评论 -
JS 数组篇 伪数组(arguments)转化为数组
什么是伪数组1. 具有length属性2. 按索引方式存储数据3. 不具有数组的方法, 比如push(),pop()等伪数组有哪些1.document.getElementsByTagName和document.childNodes,返回NodeList对象的都是伪数组2.上传文件时选择的file对象也是伪数组3.function的arguments对象(参数数组)4.Jquery 中 $() 抓取的对象 都是 伪数组5.自制伪数组let a = {0:1,1:2,length:2}原创 2020-11-24 15:12:46 · 444 阅读 · 0 评论 -
JS 数组篇 数组常用API 下
此篇主要是数组循环的一些apiforEach()定义forEach() 方法对数组的每个元素执行一次给定的函数。语法arr.forEach(callback(currentValue,index,array), thisArg)参数callback为数组中每个元素执行的函数,该函数接收一至三个参数:currentValue数组中正在处理的当前元素。index 可选数组中正在处理的当前元素的索引。array 可选forEach() 方法正在操作的数组。thisAr转载 2020-11-24 13:41:00 · 127 阅读 · 0 评论 -
JS 数组篇 数组常用API 上
push()定义push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。更改原数组参数elementN被添加到数组末尾的元素。返回值当调用该方法时,新的 length 属性值将被返回。示例//添加元素到数组var sports = ["soccer", "baseball"];var total = sports.push("football", "swimming");console.log(sports); // ["soccer",转载 2020-11-24 10:50:58 · 101 阅读 · 0 评论 -
JS String篇 字符串常用Api
charAt()定义charAt() 方法从一个字符串中返回指定的字符。语法str.charAt(index)参数index一个介于0 和字符串长度减1之间的整数。 (0~length-1)如果没有提供索引,charAt() 将使用0。描述字符串中的字符从左向右索引,第一个字符的索引值为 0,最后一个字符(假设该字符位于字符串 stringName 中)的索引值为 stringName.length - 1。如果指定的 index 值超出了该范围,则返回一个空字符转载 2020-11-23 14:15:29 · 476 阅读 · 0 评论 -
JS 进阶篇(一) 手动实现 Object.create 和 操作符new
Object.create()定义:Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。语法Object.create(proto,[propertiesObject])参数proto新创建对象的原型对象。propertiesObject可选。需要传入一个对象,该对象的属性类型参照Object.defineProperties()的第二个参数。如果该参数被指定且不为 undefined,该传入对象的自有可枚举属性(即其自身定原创 2020-11-22 15:30:33 · 400 阅读 · 0 评论 -
JS 进阶篇(二) 手动实现call apply bind
手动实现callcall的使用let obj = { key:'obj value' }funciton getName(){ return this.name}console.log(getName.call(obj))思考 1.如何在obj里面调用getName? 2.call方法是绑定在谁的身上?解答第一个问题,需要在obj内部添加一个getName方法var obj = { name:"obj name", getName:function(){原创 2020-11-22 13:23:27 · 132 阅读 · 0 评论 -
JS 基础篇(三) call apply bind 区别
call apply bind的使用```const obj = { name:'obj name'}function getName(para1,para2){ return this.name + '-'+para1+'-'+para2}//call 的使用console.log(getName.call(obj,'form','call'))//apply 的使用console.log(getName.apply(obj,['form','call']))//bind 的使用原创 2020-11-22 10:25:09 · 414 阅读 · 0 评论 -
JS 基础篇(一) instanceof、constructor
instanceof定义:instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。语法:object instanceof constructor参数: object 某个实例对象 constructor 构造函数codefunction Car(make, model, year) { this.make = make; this.model = model; this.year = year;}cons原创 2020-11-20 13:51:38 · 519 阅读 · 0 评论 -
JS 基础篇(七) 函数柯理化
以下方法来自于各种资料大厂面试题收集。添加了一些个人理解的注释和解释。对下面概念熟悉的小可爱,不喜勿喷。侵删本人脑回路略慢,写的是我认为的比较详细的版本call,apply,bind的区别相同点:能够改变this指向不同点:call apply在使用的时候会触发运行一次,而bind只是绑定了函数,不会立即执行call、apply因为要立即执行函数,所以第二个参数或之后的参数都是当前的真实参数,bind是“预设参数”call 与 apply 传参不同:call可以多参数;apply 是一个原创 2020-07-21 15:53:16 · 423 阅读 · 0 评论 -
JS 基础篇(五) 继承方法总结
看了原型链,顺便连同继承的实现打包带走。先来铺垫下前言小白:声明一个对象的方式有哪几种?小黑:内置构造函数声明var objOne = new Object();objOne.name = 'kk';objOne.age='17';字面量var objTwo = { name:'kk', age:'17'}函数声明function Cat(name,age){ this.name=name; this.age = age; this.getInfo = func原创 2020-07-14 02:07:44 · 212 阅读 · 0 评论 -
JS 基础篇(四) 原型与原型链
这篇文章主要是最近看一个检测对象类型问题 延伸想到的,看了很久觉得不好理解,记录一下,很怕自己写的不好,所以希望看到的人只是做一个参考(当然如果,你愿意指出我的错误,让我也进步一点,感激)先来看一个问题var A = function() {};A.prototype.n = 1;var b = new A();A.prototype = { n: 2, m: 3}var c = new A();console.log(b.n);console.log(b.m);consol原创 2020-07-13 04:17:06 · 1158 阅读 · 4 评论 -
JS 基础篇(六) 闭包理解与实现
闭包原理记录原创 2020-07-07 21:35:13 · 179 阅读 · 0 评论 -
JS 基础篇(二) 检测对象类型
前言Javascript 数据类型分为两类:基本类型和引用类型ES5 :Number String Null Undefined Boolean 和 ObjectES6 :新增了一个Symbol数据类型此外,还有一个BigInt可能成为第八种数据类型,bigint 用来表示比2^53 -1更大的数关于 Symbol和BIgInt 两位新成员 后续整理。开始进入本篇的小知识先上代码1.判断是否是数组的方法主要用来鉴别Array与Object1)instanceoflet a = []原创 2020-07-10 10:46:59 · 293 阅读 · 0 评论