javascript
文章平均质量分 74
小铃铛的打怪之路
这个作者很懒,什么都没留下…
展开
-
关于Promise那些事系列(2)
接着说Promise~一、Promise基本用法Promise实例生成之后,可以使用then方法执行resolved状态和rejected状态的返回函数,也就是上面说的操作成功和失败的结果传递出去。 promise.then(value=>{ //成功 },error=>{ //失败 })then方法可以接收两个回调函数作为参数。第一个回调函数是Promise对象状态变为 resolved时调用,第二个回调函数是Promise对象的状态变原创 2022-02-04 17:29:50 · 642 阅读 · 0 评论 -
关于Promise那些事系列(1)
上一篇写了同步和异步,也提到了回调函数,异步编程需要通过回调函数来完成。一、回调函数在日常项目工作中一定有需要多次异步请求到结果后在执行的代码,比如function f1(f2){ console.log(1) } function f2(f3){ console.log(2) } function f3(){ console.log(3) }原创 2022-02-03 16:25:12 · 808 阅读 · 0 评论 -
JavaScript的同步与异步1
同步和异步绝对是开发人员听起来很熟悉的亮哥词语,但是总是理解的不是很透彻,无法在开发中运用到,接下来是我的学习笔记。1.单线程单线程模型:JavaScript只在一个线程上运行。通俗点来说就是,JavaScript只能同时执行一个任务,其他任务都在后面排队等待被执行。虽然,JavaScript只在一个线程上运行,但是并不代表JavaScript引擎只有一个线程。反而恰恰相反,JavaScript引擎有多个线程,单个脚本只能在一个线程上运行,也就是我们说的主线程。JavaScript为什么使用单.原创 2022-01-29 16:05:03 · 1125 阅读 · 0 评论 -
数据结构—单链表
链表和数组一样,都用于存储数据,但是他俩的存储机制却不相同。一、认识链表在开始学习单链表之前,我们先要知道什么是链表?它和数组的区别到底在哪里?1. 数组:数组的创建大多数需要申请一段连续的内存空间,且大小是固定的(大多数编程语言都是固定的),如果当前数组不满足容量大小,需要扩容(一般情况下是申请一个更大的数组, 比如2倍. 然后将原数组中的元素复制过去)。当我们想要再数组首位i或者中间插入一个新的元素时,需要大量元素位移。(尽管JS中Array提供的方法能够帮助我们完成,但是背后的远.原创 2021-11-04 14:30:19 · 196 阅读 · 0 评论 -
数组扁平化,去重,排序一套全搞定
文章目录数组扁平化1.使用数组的reduce()方法2.先转换成字符串,在通过字符串转换为数组完成3.普通递归实现4.使用扩展运算符实现总结数组扁平化数组扁平化,就是把多维数组变成一维数组。arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]newArr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]比如将arr变原创 2021-10-22 11:42:30 · 709 阅读 · 0 评论 -
js复习(10)——同步、异步?区别?回调函数?
同步和异步同步异步同步和异步的区别回调函数获取异步API返回值同步同步任务就是排队在主线程上执行的任务,只有前一个任务执行完毕,才会执行下一个任务。console.log('first')console.log('second')这里打印的结果是first-second,也就是说同在主线程的任务,会从上到下依次执行,前面代码会阻塞后面的代码执行。异步异步任务就是不进入主线程,而是进入到任务队列里面的任务。当主线程所有任务执行完毕之后,任务队列会通知主线程请求执行任务,该任务才会进入主线原创 2021-03-01 10:30:05 · 274 阅读 · 0 评论 -
js复习(9)——设计模式?工厂模式?构造函数模式?
什么是工厂模式?工厂模式是一种用来创建对象的设计模式。我们不暴露对象创建的逻辑,而是将逻辑封装在一个函数内,那么这个函数就可以成为工厂。工厂模式可以根据抽象的程度分为:简单工厂、工厂方法、抽象工厂。1.简单工厂 let factory = function (work) { function teacher() { this.name = '老师', this.work = ['上课', '备课'] } function stud原创 2021-02-27 19:15:07 · 96 阅读 · 0 评论 -
JS复习(8)——JS浅拷贝和深拷贝
浅拷贝是只拷贝一层,更深层次对象级别的拷贝只拷贝引用。深拷贝拷贝多层,每一级别的数据都会拷贝。通俗来说就是假设B复制了A,当A修改时,B如果变了就是浅拷贝,B如果没变就是深拷贝。深入点来说,就是B复制了A,如果B复制的是A的引用,那就是浅拷贝,如果B复制的是A的本体,那就是深拷贝。首先在进入正题之前,我们需要了解堆栈和数据类型堆栈和数据类型在JS中数据类型被分为两种:基本类型和引用类型基本类型:number,string,Boolean,null,undefined,它们的值被以键值对的形式保存原创 2020-10-02 12:08:23 · 201 阅读 · 0 评论 -
JS复习(7)——JS中的大难题this的指向
关于this的指向问题,记住最核心的一句话:哪个对象调用了函数,函数里面的this就指向哪个对象this的指向分为四种:普通函数的this指向全局对象windowssssss普通函数中的this指向全局对象 console.log(this); //window //普通函数种 function fn() { console.log(this) //window } fn() //声明函数中 var f = fu原创 2020-09-25 16:42:20 · 225 阅读 · 0 评论 -
JS复习(6)——普通函数和箭头函数
普通函数let a = function f(){ //执行语句}箭头函数let b = ()=>{ //执行语句}区别:this的指向不同 let obj = { name: 'zhangsan', //1.普通函数,指向它的直接调用者 f1: function() { console.log(this); }, //2.原创 2020-09-14 11:41:33 · 152 阅读 · 0 评论 -
JS复习(4)——数组扁平化
数组扁平化?数组扁平化庸俗来说就是将一个多维数组变成一个一维数组并归方法: reduce function flatten(arr) { return arr.reduce((result, item) => { return result.concat(Array.isArray(item) ? flatten(item) : item) },[]) }toString & split / jo原创 2020-09-08 09:22:08 · 98 阅读 · 0 评论 -
JS复习(3)——搞懂JS的防抖和节流
文章目录防抖节流使用场景防抖就是在一定时间内,只执行最后一次节流就是在一定时间内只执行一次防抖连续点击按钮,只会在500内执行最后一次点击<body><button>防抖按钮</button><script> var btn = document.querySelector('button'); //防抖 btn.addEventListener('click', debounce()); functio原创 2020-09-02 09:51:59 · 251 阅读 · 1 评论 -
JS复习(5)——原型的修改和重写
再讲整题之前,我们需要对原型有一定的理解 //创建一个构造函数Cat function Cat(){} //为构造函数的原型添加属性 Cat.prototype.type="cat"; Cat.prototype.eat = function () { alert('我爱吃鱼') }; //创建实例对象 var cat1 = new Cat(); cat1.eat(); //弹出'我爱吃鱼'在每个实例对象里面都有一个[[原创 2020-08-27 21:37:49 · 1032 阅读 · 0 评论 -
JS复习(2)——面向对象?面向过程?创建对象?
文章目录第一部分面向对象?面向过程区别面向对象的特征第二部分创建对象的多种方式构造函数和普通函数的区别继承第一部分面向对象?总听说面向对象编程,那面向对象到底是什么?面向对象就是将构成问题的事物分解成多个对象,然后由对象之间分工和合作。面向过程面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的一次调用就可以了区别面向过程性能比面向对象高,适合跟硬件联系很紧密的东西。例如单片机。没有面向对象易维护、易复用、易扩展。面向对象编程具有灵活、代码可原创 2020-08-26 22:39:02 · 124 阅读 · 0 评论 -
JS复习(1)——__proto__和prototype
原型是JavaScript面向对象编程中非常重要的概念。今天就一次性battle明白~~~~走起~先上一张图,如果你看明白这张图了,基本就能解释出__proto__和prototype的关系和区别了。看不懂的继续走起~先来一个铺垫再解释构造函数使用构造函数来创建一个对象function Person(){ }var person = new Person;person.name = '张三'console.log(person.name) //张三Person就是一个构造函数,原创 2020-08-03 22:37:55 · 205 阅读 · 0 评论 -
说说Promise~
ES6中有一个非常重要和好用的特性就是Promise那么Promise到底是做什么的呢?简单来说,Promise就是异步编程的一种解决方案拿上图做讲解:从语法上来讲,Promise实际上是一个对象,可以获取异步操作的消息((resolve,reject) => {}) 明显也是一个函数,那么resolve , reject是什么?resolve和reject也是一个函数,通常情况下,我们会根据请求数据的成功或者失败来决定调用哪一个。如果是成功的,那么我们通常调用resolv原创 2020-07-26 12:46:35 · 126 阅读 · 0 评论 -
Vue2.0和3.0的响应式原理
vue3.0在数据的响应式上无疑做了很大的优化,性能得到大大提升。虽然vue3.0还没有正式发布,但是各大公众号已经闹得不亦说乎。我们都知道vue2的响应式原理的实现依赖的是Object.defineProperty这个API,用它来为要实现响应式的数据设置getter和setter方法。如果数据多时就要循环遍历。循环遍历就会降低性能。所以vue3.0就摒弃了这个方法,改为使用ES6中的proxy来实现。而这个方法没有shim,不兼容低版本浏览器。所以vue3.0彻底摒弃了它们。下面我就用Vue原创 2020-07-19 23:04:53 · 506 阅读 · 0 评论 -
Vue基础知识Vue.extend详解
Vue.extend 属于 Vue 的全局 API,但是在实际业务开发中我们很少使用,因为使用extend写法比常用的Vue。components写法要繁琐一些。但是在一些独立组件开发场景中,Vue.extend + $mount 这对组合是我们需要去关注的。学习开始之前我们先看一眼官方文档是怎么介绍的Vue.extend(options)我这里直接截图过来了在vue项目中,我们有了初始化的根实例之后,页面之间都是通过router进行管理,组件也是通过import进行局部注册,相比于extend轻原创 2020-07-18 15:59:45 · 2772 阅读 · 1 评论 -
高级js复习总结(一)
高级js复习面向对象编程面向过程编程面向对象编程面向对象的三大特征面向对象的思维特点类super关键字继承面向对象编程面向过程编程众所周知,编程有两大编程思想:面向过程和面向对象。面向过程编程:POP (Process-oriented programming)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的一次调用就可以。通俗的理解就是,拿狗吃屎举例,面向过程就是吃(狗,屎),强调的是吃这个动作。优点:性能比面向对象高,适合跟硬件联系很紧密的原创 2020-06-08 22:26:55 · 446 阅读 · 0 评论 -
简单BOM总结
BOM总结BOM概述window对象常见属性两种定时器setTimeOutsetBOM概述window对象常见属性两种定时器setTimeOutset原创 2020-06-04 09:10:58 · 648 阅读 · 2 评论 -
js基本函数总结
js基本函数1. 函数定义2. 函数声明2.1 函数体方式2.2 函数表达式2.3 构造器方式2.4 字面量方式3. 函数提升(变量提升)3.1 什么是提升?3.2 变量提升3.3 函数提升3.3.1 案例13.3.2 案例23.3.3 案例34. 函数的调用4.1 直接调用4.2 链接调用4.3 事件中调用4.4 递归调用5. 箭头函数5.1 基本使用5.2 this的指向问题6. 函数方法6.1 toString()方法6.2 call()方法6.3 apply()方法1. 函数定义js函数是通过f原创 2020-05-31 22:45:35 · 331 阅读 · 0 评论