
javascript学习
js知识点整理
无敌喜之郎
这个作者很懒,什么都没留下…
展开
-
双击事件 如何判断
console.log(“双击触发了”);console.log(“最初的点击”);console.log(“间隔太长”);原创 2022-12-09 18:32:52 · 597 阅读 · 1 评论 -
http中get和post详解
1.GET在浏览器回退时是无害的,而POST会再次提交请求。2.GET产生的URL地址可以被Bookmark,而POST不可以。3.GET请求会被浏览器主动cache,而POST不会,除非手动设置。4.GET请求只能进行url编码,而POST支持多种编码方式。5.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。6.GET请求在URL中传送的参数是有长度限制的,而POST么有。7.对参数的数据类型,GET只接受ASCII字符,而POST没有限制。8.GET比POST更原创 2022-03-21 15:19:54 · 2984 阅读 · 0 评论 -
协商缓存和强缓存
缓存的优点1.减少不必要的数据传输,节省宽带2.减少服务器负担,提升网页性能3.加快客户端加载网页的速度4.用户体验友好缺点资源如果有更改,但客户端不及时更新会造成用户信息滞后,如果老版本有bug的话,情况会更糟糕强缓存强缓存就是强制缓存的意思,当浏览器去请求某个文件时,服务端就在返回头中对该文件进行了缓存配置response header中 cache-control 常见的设置是max-age public private no-cache no-storemax-age 表示缓存原创 2022-03-17 13:21:34 · 955 阅读 · 0 评论 -
token的学习使用 angular及koa示例
1.客户端用户登录输入账号和密码2.服务端校验账号以及密码,通过后根据用户唯一标识符生成token并返回给客户端示例为node,koa服务端下载对应依赖包npm install jsonwebtoken --save 用法const jwt = require('jsonwebtoken')const secret = 'ZHX_TOKEN'//创建tokenlet token = jwt.sign(obj,secret,opt)//解码tokenjwt.verify(token,s原创 2022-02-12 14:38:53 · 822 阅读 · 0 评论 -
mousedown和click冲突处理方法
window.onload = () => { let btn = document.getElementById('button-test'); let flag = false let firstTime = 0 let lastTime = 0 btn.onclick = () => { if (flag) { console.log('执行click事件') } ...原创 2022-02-10 15:36:36 · 2008 阅读 · 0 评论 -
JavaScript修改checkbox半选中状态
修改checkbox的半选中状态,可以用indeterminate,只能用js去修改true 为半选 ,false取消半选/** * 判断checkbox选择状态,决定全选的状态 * @param data 数据列表 * @param checkBoxId 全选input的id */function checkBoxStatusChange(data, checkBoxId) { // 可以利用some和every来判断是否处于半选状态 some为true every为fals原创 2022-01-05 10:41:22 · 1451 阅读 · 0 评论 -
es6手写promise
//手写promise.jsconst PENDING = 'PENDING';const FULFILLEd = 'FULFILLEd';const REJECTED = 'REJECTED';const isPromise = (value) => { if ((value != null && typeof value === 'object') || typeof value === 'function') { if (typeof value原创 2021-12-24 13:17:44 · 274 阅读 · 0 评论 -
this指向详解
//this的指向共有5种类型/** * 作为对象的属性被调用 this指向该对象 */let obj = { name: 'obj-Bob', getName: function () { return this.name }}console.log(obj.getName()); //Bob/** * 作为普通函数被调用 this总是指向全局对象 通常为window * 在严格模式下 this指向undefined */var windo原创 2021-12-23 13:28:22 · 237 阅读 · 0 评论 -
promise的介绍和使用
//Promise 是一个es6的原生对象,从它可以获取异步操作的消息,承诺了未来要发生的事,用来传递异步操作的信息//Promise 有三种状态 pending等待态 fulfiled成功态 rejected失败态//一旦promise被 resolve或reject,就不能再迁移其他任何状态 即状态immutable//promise 的基本过程//1.初始化Promise状态 pending//2.立即执行Promise中传入的fn函数,将Promise内部resolve,reject函原创 2021-12-23 13:17:14 · 89 阅读 · 0 评论 -
树型数据转换
/** 扁平化数据变成树 */const _iteration = (_target = [], { _id = "id", pid = "pid", children = "children", rootId = "root" } = {}) => { let _parentMap = new Map() const target = JSON.parse(JSON.stringify(_target)) let result = []; for (const item of target原创 2021-12-23 13:27:09 · 154 阅读 · 0 评论 -
JavaScript中防抖节流方法整理
//防抖是一段时间内只执行最后一次function debounce(fn, delay) {let timer = null //借助闭包return function () {if (timer) {clearTimeout(timer)}timer = setTimeout(fn, delay) // 简化写法}}function showTop() { }window.onscroll = debounce(showTop, 1000)//节流是每隔一段时间执行一次func原创 2021-12-22 16:31:12 · 123 阅读 · 0 评论 -
js原型链以及手写new方法
//原型链//通过new 函数名来实例化对象的函数叫做构造函数//构造函数的主要功能为初始化对象,特点是和new一起使用 构造函数定义时首字母大写 为初始化的对象添加属性和方法function Person(name) { this.name = name}let person = new Person('张三'); //person为一个新对象console.log(person.name);//new一个新对象的过程//1.创建一个空对象//2.空对象的_proto_指向构原创 2021-12-23 13:20:17 · 192 阅读 · 0 评论 -
js事件传播流程
js事件传播流程捕获阶段:事件从根节点流向目标节点,途中流经各个DOM节点,在各个节点上触发捕获事件,直到达到目标节点。目标(target)阶段:在此阶段中,事件传导到目标节点。浏览器在查找到已经指定给目标事件的监听器后,就会运行该监听器。事件冒泡: 当为多个嵌套的元素设置了相同的事件处理程序,它们将触发事件冒泡机制。在事件冒泡中,最内部的元素将首先触发其事件,然后是栈内的下一个元素触发该事件,以此类推,直到到达最外面的元素。如果把事件处理程序指定给所有的元素,那么这些事件将依次触发。阻止事件冒泡原创 2021-06-21 14:52:11 · 206 阅读 · 0 评论 -
es6拓展运算符
//拓展运算符 ... 将一个数组转为用逗号分隔的参数序列 能够展开字符串,数组,对象//数组克隆 引用类型直接= 引用的内存是是同一个,利用拓展运算符进行克隆是开辟了一块新的内存const arr = [1, 2, 3, 4];const arr1 = [...arr]console.log(arr1) //[1,2,3,4]//数组合并const arr1 = [1, 2, 3, 4];const arr2 = [5, 6];const arr3 = [7, 8, 9];const a原创 2021-12-24 13:14:22 · 297 阅读 · 0 评论 -
new Function()的使用
new Function()前面的是函数的参数,更确切的说,是各参数的名称,而函数体在最后,类型是字符串,所有的参数也是字符串形式例子let a = new Function(‘a’,‘b’,‘return a + b’);alert(a(1,2)); //3如果新建的Function没有参数,那么它只有一个函数体参数闭包用new Function创建函数时,其[[environment]]不是引用当前的词法环境而是引用全局环境function a(){let b = ‘test’;l原创 2021-06-22 15:38:36 · 2980 阅读 · 0 评论 -
es6构造器
/ 引进的新的数据类型//Generator函数有两个特征//function关键字和函数名称中间有*//函数体内部有yield语义定义不同状态//yield 和 next//通过yield语句 可以在生成器函数内部暂停代码的执行使其挂起,此时生成器函数是仍然运行并活跃的,其内部资源会保留下来,只是被暂停//在迭代器上调用next()可以使代码从暂停的地方继续运行function* main() { console.log('starting* main') yield原创 2021-12-24 13:16:09 · 585 阅读 · 0 评论 -
javascript中class知识点整理
//es6中引入class的概念 通过class可以定义为类 类的本质还是一个函数,是构造函数的另一种写法//实现面对对象编程function Person1() { }class Person2 { }console.log(typeof Person1, typeof Person2) //function,function//es5 function写法function Person3(name, age) {this.name = name;this.age = age;}Per原创 2021-12-22 16:27:57 · 414 阅读 · 0 评论 -
javascript闭包
//闭包//1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数和变量不会被垃圾机制回收// 1.函数 2.函数内部可以访问到的变量function testaa() {let test = null;// 2.函数内部可以访问到的变量return function () {//1.函数console.log(test)test = test + ‘aaaa’;}}let test = testaa();setInterval(testaa(), 1000)test =原创 2021-12-22 16:28:52 · 74 阅读 · 0 评论 -
es6解构
//解构的用处 简化数组和对象里面元素的赋值语句//数组解构 数组本身没有发生变化,解构是对新的变量赋值let [a, b, c] = [1, 2, 3];console.log(a, b, c) //1,2,3 //嵌套数组let [d, [e], f] = [4, [5], 6];console.log(d, e, f); //4,5,6let list = [1, 2, 3, 4, 5, 6];let [g, ...h] = list;console.log(g, h)原创 2021-12-24 13:15:18 · 197 阅读 · 0 评论 -
es6Map、Set数据类型
//Set 和 Map是es6标准新增的数据类型//map是类似object的键值对集合 map的键不仅仅为字符串,其他各种类型的值包括对象都可以成为键//key 值唯一 如果一直根据同一个key设值,后面设置的会充冲掉前面的let map = new Map([['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3']]);console.log(map)console.log(map.size)//键值对数量console.log(原创 2021-12-23 13:21:27 · 241 阅读 · 0 评论 -
JavaScript中的Array数组方法整理
//数组是对象的子集//join 不会影响原数组 数组转字符串const arrayList = [1, 2, 3, 4, 5];let result = arrayList.join(’,’);console.log(result, arrayList) // 1,2,3,4,5 [1,2,3,4,5]//push 在末尾添加 影响原数组 返回数组长度const arrayList = [1, 2, 3, 4, 5];const result = arrayList.push(6);co原创 2021-12-22 16:26:44 · 640 阅读 · 0 评论 -
javascript中string字符串知识点整理
const tilte = '常用字符串操作';//1字符串转换//toString() String() '' + JSON.stringifylet num = 520;//都不会改变原变量let stringNum;stringNum = num.toString();stringNum = String(num);stringNum = '' + num;stringNum = JSON.stringify(num);console.log(typeof num, typeof原创 2021-12-23 13:30:37 · 292 阅读 · 0 评论 -
js数据类型判断
//检测数据类型的几种方法//typeof//typeof在对值类型number string boolean symbol function undefined反应是精准的//typeof在对引用类型object array 和 null 都会返回objectconsole.log(typeof 1); //numberconsole.log(typeof '1');//stringconsole.log(typeof true);//booleanconsole.log(typeof Sy原创 2021-12-23 13:25:27 · 128 阅读 · 0 评论