![](https://img-blog.csdnimg.cn/20200607203028688.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaScript
记录JavaScript相关的知识点
宋同学少年
不是当程序猿的童鞋不是好厨师,我是小凡,很幸运和你在这里遇见,一起加油✊✊
展开
-
防抖和节流的简单实现
防抖 何为防抖:你尽管触发事件,我一定会在事件n秒后去执行事件,你不断触发了事件,那么我就以你的每次触发时间为最新,重新计时,之前的都不算 简单实现原理思路:(这里以点击不断的点击事件为例子) 用户每次点击按钮,都会开始重新计时,所以这里就需要一个定时器,每次用户点击,都要去清除定时器,这时候我们需要将定时器的id保存起来,用以清除定时器,这里就需要考虑这个定时器的id保存在哪里了,这个定时器的id应该被保存起来的,不能我们每一给触发事件,就重新赋值,这样就不行了,所以我们考虑用闭包来保存这个值,用户每次点原创 2020-07-30 21:24:27 · 703 阅读 · 0 评论 -
函数之执行上下文和作用域
全局执行上下文: 在执行代码前将window设置为全局执行上下文 对全局进行预处理 将 var 定义的全局变量====》undefined,添加为window属性 function声明的全局函数====>赋值(fun).添加为window方法 this====>赋值(window) 开始执行全局代码 函数执行上下文: 在调用函数,准备执行函数体之前,创建对应的函数执行上下文对象 对局部数据进行预处理 形参变量==>赋值(实参)==>添加为执行上下文的属性 argueme原创 2020-06-10 08:55:47 · 334 阅读 · 0 评论 -
牢记几句话搞定原型链和继承
前面也写过原型链的文章,但是发现从这个方面分析原型链更好理解,所以记录了下来,实例对象都有隐式原型(__proto__),函数对象都有显式原型(prototype)记住下面两句话句话再去看图对你理解原型链很有帮助: 实例对象的隐式原型指向构造函数的显式原型 函数的显示原型指向的对象默认为空Object实例对象(Object除外) 如果看完图还是不明白,还是请你去看前面两句话,这里解释一下:函数的显示原型指向的对象默认为空Object实例对象(Object除外),为什么Object除外呢?如果按照我们上原创 2020-06-05 09:25:12 · 309 阅读 · 0 评论 -
对js中关键字class类的认识
class可以看做是构造函数的语法糖,class在功能上更加完善 class中原型方法的写法 class Student{ show(){ console.log("哈哈") } } 直接在大括号里面添加方法就是添加到原型里面,对比构造函数在原型中添加方法Student.prototype.show=function(){}更加方便 在class中添加的原型方法,还有一个好处就是在遍历属性的时候,不会被遍历(利用for in循环遍历)到,class关键字给原创 2020-06-04 14:19:25 · 796 阅读 · 0 评论 -
js面向对象编程---基础知识点
对面向对象的一些知识点的笔记 记1:函数服务于对象内部叫做方法 记2:对象属性的基本操作 let user = { name: "小凡", "my age": 19//属性比较特殊 } console.log(user.name)//第一种方式 小凡 console.log(user["my age"])//第二种方式--不标准命名 19 for (const key in user) { console.log(user[k原创 2020-06-03 15:24:11 · 298 阅读 · 0 评论 -
对call(),apply(),bind()方法的总结
call()的作用: 1 该变函数内部this的指向 2 函数立即执行(也就是说仅仅是用call()改变了一下this的指向,函数该怎么执行还是怎么执行) const obj = { name: "小凡" } function f1(x) { console.log(this === obj)//true console.log(x) } f1.call(obj, 1)//函数还是传参调用 3 call()同样可以用来原创 2020-06-03 15:14:27 · 210 阅读 · 0 评论 -
解决js中无敌神兽---闭包
对于闭包的务必产生记住三句话: 1 函数的里面返回函数, 2 内部函数要用到外部函数的值(这也是为什么会有闭包产生) 3 外部函数调用一次产生一个闭包 我们先来实现一个简单的需求,实现计数器的功能:即函数每调用一次,就让数加1 function add() { let value = 0 value++ console.log(value) } add()//1 add()//1 add()//1 这个函数并没有现实我们的需求原创 2020-05-28 15:21:23 · 472 阅读 · 0 评论 -
对同步和异步以及宏认为和微任务的理解
废话不多说:直接上图(js的执行机制) js是单线程的,就是不管什么时候,只能做一件事,如果这件事用时太长,导致的结果就是,我们在这个期间什么事情都干不了,所以在浏览器内部会对我们的代码进行辨别,如果是同步代码,(好了啥也不管,奥利给,干),放入主线程开始执行,如果是异步的代码,就需要将异步的回调函数放入Event Table注册,等待需要执行的条件满足,就会放入Event Queue,等待主线程执行结束,再来Event Queue中找任务,有的话就拿到主线程中执行,这时候可能有小伙伴就要问了,浏览器怎么原创 2020-05-20 20:33:40 · 440 阅读 · 0 评论 -
js中数组以及常用方法笔记
数组相关的一些介绍: 因为我们最常用的是字面量的方式创建数组,别忘了还有数组的构造函数创建方式: a、var arr1 = new Array();//创建空数组 b、var arr2 = new Array(10);//创建一个长度为10的数组 c、var arr3 = new Array(5,4,3,2,1);//创建数组并初始化 为了避免arr2的情况,所以可以var arr2 = Array.of(10)//[10]表示只有一个项为10 检测数组 1 检测数组是不是对象可以利用console.l原创 2020-06-01 09:36:34 · 126 阅读 · 0 评论 -
原型的一些作用和对继承的理解(杂记)
原型的理解:通俗一点可以将原型比作对象的爸爸,每个函数(更准确一点说构造函数)在创建的时候都有一个原型prototype,每个对象都拥有__proto__原型(当然后面我们也可以人为创建没有__proto__的对象),这样看来函数就会拥有这两个属性(既当爹有当妈),因为函数也是对象,每个对象又都是通过构造函数实例化出来的,所以二者就有了关系,对象的实例化写法 let arr=new Array(1,2,3,4) 和let object=new Object()和let bool=new Boolean()和原创 2020-06-02 10:25:01 · 176 阅读 · 0 评论 -
js中遍历数组方法的总结(结合实际)
数组的很多方法都可以实现对数组的操作,但是在使用的时候,有时候能够用对方法,往往能够达到事半功倍的效果 方法1—forEach方法-----没有返回值,对原数组没有影响 假设这样的场景:我们在实现购物车商品结算的时候,默认加入购物车的商品是勾选的,全选按钮就会勾上,当我们取消全选按钮时,就应该遍历存商品的数组,让所用按钮的状态和全选按钮一致:具体代码如下 handleAllChecked() { let {cart, allChecked} = this.data allCh原创 2020-05-27 10:23:10 · 220 阅读 · 0 评论