
js
我是一个脸
这个作者很懒,什么都没留下…
展开
-
JavaScript专题之变量(形参、var声明、匿名函数名字)
1.本应匿名的函数如果设置了函数名如AAA,在外面无法调用AAA(),但是函数里面是可以使用的2.而且类似于创建常量一样,这个名字存储的值不能再被修改(非严格模式下不报错,但是不会有任何效果, 严格模式下直接报错,可以把AAA理解为是用const创建出来的,A = 1000不能做到)var b = 10; //注意这里,必须加;(function b(){ //是不是私有变量:1.没有形参 2.没有var b = 20 //看b是不是属于匿名函数的名字 console.log.原创 2020-05-17 17:29:53 · 405 阅读 · 0 评论 -
JavaScript专题之闭包必考题
题目:问控制台打印输出的结果for (var i = 0; i < 10; i++) { //定时器是异步编程:每一轮循环设置定时器,无需等定时器触发执行,继续下一轮循环(定时器触发的时候,循环已经结束了) setTimeout(() => { console.log(i) //10 }, 1000)}需求: 让每一轮循环输出当前的i值实现代码:1.修改let,形成块级作用域for (let i = 0; i < 10; i++) {原创 2020-05-17 17:17:34 · 298 阅读 · 0 评论 -
JavaScript专题之数组合并
题目1:let arr1 = [‘A1’,‘A2’,‘B1’,‘B2’,‘C1’,‘C2’,‘D1’,‘D2’]let arr2 = [‘A’,‘B’,‘C’,‘D’]合并后的数组为: [‘A1’,‘A2’,‘A’,‘B1’,‘B2’,‘B’,‘C1’,‘C2’,‘C’,‘D1’,‘D2’,‘D’]实现代码:// 方式一: localeCompare: 用本地特定排序规则对字符串数组进行排序arr2 = arr2.map(item => item + 'Z')arr = arr1.con原创 2020-05-17 16:59:17 · 201 阅读 · 0 评论 -
JavaScript专题之new的实现
基于内置的new的关键词,我们可以创建Dog的一个实例sanmao,实例可以调取原型上的属性和方法需求:自己实现一个_new方法,也能模拟出内置new后的结果思路:1.像普通函数执行一样,形成一个私有的作用域 +形参赋值 +变量提升2.默认创建一个对象,让函数中的this指向这个对象,这个对象就是当前类的一个实例3.代码执行4.默认把创建的对象返回实现代码:function Dog(name) { this.name = name //this是Dog创建的实例}D原创 2020-05-17 16:50:52 · 180 阅读 · 0 评论 -
JavaScript专题之排序
1.冒泡排序实现源码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>冒泡排序</title></head><body> <原创 2020-05-17 14:35:03 · 116 阅读 · 0 评论 -
JavaScript专题之函数柯里化
函数柯里化: 预先处理思想(利用闭包机制)将要使用到的数据存入闭包,要用到的使用从闭包当中找// 简单例子// function fn(x) {// //会预先将x存入闭包// return function (y) {// return x+y// }// }// fn(100)(200)// 实现bind方法// 思想: 执行bind方法,会返回一个匿名函数(function () { // context=window: 传入的原创 2020-05-17 12:40:02 · 159 阅读 · 0 评论 -
JavaScript专题之数组扁平化
题目:编写一个程序, 将数组扁平化, 并去除其中重复部分数据,最终得到一个升序且不重复的数组 let arr = [[1, 2, 2], [3, 4, 5, 5],[6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]// 方式一:使用ES6提供的Array.prototype.flat处理//扁平化后去重再排序//arr.flat(Infinity),使用 Infinity,可展开任意深度的嵌套数组//去重两种方式,因为new Set(arr)的结果是对象,原创 2020-05-17 11:37:56 · 191 阅读 · 0 评论 -
JS高级教程知识整理——13继承模式
01.原型链继承方式一: 原型链继承1.套路1.定义父类型构造函数2.给父类型的原型添加方法3.定义子类型构造函数4.创建父类型的对象赋值给子类型的原型5.将子类型的构造属性设置为子类型6.给子类型原型添加方法7.创建子类型的对象,可以调用父类型的方法2.关键1.子类型的原型为父类型的一个实际对象实现代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"&原创 2020-05-10 11:14:59 · 137 阅读 · 0 评论 -
JS高级教程知识整理——14线程机制与事件机制
01进程与线程1.进程*程序的一次执行,它占有一片独有的内存空间*可以通过windows任务管理器查看进程2.线程*是进程内的一个独立执行单元*是程序执行的一个完整流程*是cpu的最小的调度单元3.图解 4.相关知识*应用程序必须运行在某个进程的某个线程上*一个进程中至少有一个运行的线程:主线程,进程启动后自动创建*一个进程中也可以运行多个线程,我们会说程序是多线程运行的*一个进程内的数据可以供其中的多个线程直接共享*多个进程之间的数据是不能直接共享*线程池(thread原创 2020-05-10 10:50:45 · 188 阅读 · 0 评论 -
JS高级教程知识整理——12对象创建模式
方式一: Object构造函数模式套路: 先创建空Object对象, 再动态添加属性/方法适用场景: 起始时不确定对象内部数据问题: 语句太多实现代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewp...原创 2020-05-05 10:09:36 · 146 阅读 · 0 评论 -
JS高级教程知识整理——10作用域与作用域链
01.作用域1.什么是作用域(理解)*就是一块“地盘”,一个代码段所在的区域*它是静态的(相对于上下文对象),在编写代码时确定了2.分类*全局作用域*函数作用域*没有块作用域(ES6有了)3.作用*隔离变量,不同作用域下同名变量不会有冲突实现代码:<!DOCTYPE html><html lang="en"><head> &...原创 2020-05-04 15:18:39 · 183 阅读 · 0 评论 -
JS高级教程知识整理——11闭包
00 引入闭包的概念需求:点击某个按钮,提示弹出的是第n个按钮.实现代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-s...原创 2020-05-04 12:06:14 · 213 阅读 · 0 评论 -
JS高级教程知识整理——汇总
JS高级教程知识整理——01数据类型JS高级教程知识整理——02数据_变量_内存JS高级教程知识整理——03对象JS高级教程知识整理——04函数JS高级教程知识整理——05回调函数JS高级教程知识整理——06IIFE(匿名函数自调用)JS高级教程知识整理——07函数中的thisJS高级教程知识整理——(补充)分号问题JS高级教程知识整理——08原型与原型链JS高级教程知识整理——...原创 2020-04-30 16:47:20 · 322 阅读 · 0 评论 -
JS高级教程知识整理——09执行上下文与执行上下文栈
01.变量提升 与 函数提升1.变量声明提升*通过var定义(声明)的变量,在定义语句之前就可以访问到*值: undefined2.函数声明提升*通过function声明的函数,在之前就可以直接调用*值: 函数定义(对象)3.问题: 变量提升 和 函数提升是如何产生的?实现代码:<!DOCTYPE html><html lang="en"><...原创 2020-04-30 16:34:38 · 151 阅读 · 0 评论 -
JS高级教程知识整理——08原型与原型链
01.原型1.函数的prototype属性*每个函数都有一个prototype属性,它默认指向一个object空对象(原型对象)*原型对象中有一个属性constructor,它指向函数对象2.给原型对象添加属性(一般是方法)*作用:函数的所有实例对象自动拥有原型中的属性(方法)实现代码:<!DOCTYPE html><html lang="en">&l...原创 2020-04-30 16:16:37 · 241 阅读 · 0 评论 -
JS高级教程知识整理——(补充)分号问题
1.js一条语句的后面可以不加分号2.是否加分号是编码风格问题,没有应该不应该,只有你自己喜欢不喜欢3.在下面2种情况下不加分号会有问题*小括号开头的前一条语句*中方括号开头的前一条语句4.解决办法:在行首加分号实现代码:<!DOCTYPE html><html lang="en"><head> <meta charset="...原创 2020-04-30 15:06:49 · 168 阅读 · 0 评论 -
JS高级教程知识整理——07函数中的this
1.this是什么*任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window*所有函数内部都有一个变量this*它的值是调用函数的当前对象2.如何确定this的值*test() : window*new test() : 新创建的对象*p.test() : p*p.call(obj) : obj实现代码:<!DOCTYPE html><h...原创 2020-04-30 15:04:29 · 152 阅读 · 0 评论 -
JS高级教程知识整理——06IIFE(匿名函数自调用)
1.理解*全称:Immediately-Invoked Function Expression 立即执行(调用)函数表达式2.作用*隐藏实现(外部程序看不到)*不会污染外部(全局)命名空间*用来编写js模块实现代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF...原创 2020-04-30 12:14:30 · 173 阅读 · 0 评论 -
JS高级教程知识整理——05回调函数
1.什么函数才是回调函数(1)你定义的(2)你没有调(3)但最终它执行了2.常见的回调函数*dom事件回调函数*定时器回调函数*ajax请求回调函数*生命周期回调函数实现代码: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <...原创 2020-04-30 11:46:44 · 158 阅读 · 0 评论 -
JS高级教程知识整理——04函数
1.什么是函数*实现特定功能的n条语句的封装体*只有函数是可以执行的,其他类型的数据不能执行2.为什么要用函数*提高代码复用*便于阅读交流3.如何定义函数*函数声明*表达式区别:变量提升4.如何调用(执行)函数* test() 直接调用* obj.test() 通过对象调用* new test() new调用* test.call/apply obj中没有test方法...原创 2020-04-30 11:41:37 · 170 阅读 · 0 评论 -
JS高级教程知识整理——03对象
1.什么是对象(变量存一个数据,对象存多个数据)* 多个数据的封装体* 用来保存多个数据的容器* 一个对象代表现实中的一个事物2.为什么要用对象* 统一管理多个数据,否则得定义多个变量3.对象的组成* 属性:属性名(字符串)和属性值(任意)组成* 方法:一种特别的属性(属性值是函数)4.如何访问对象内部数据* .属性名 : 编码简单,有时不能用* [‘属性名’] :编码麻烦...原创 2020-04-30 11:30:16 · 151 阅读 · 0 评论 -
JS高级教程知识整理——02数据_变量_内存
什么是数据*存储在内存中代表特定信息的东东,本质上是010101…*数据的特点: 可传递,可运算*一切皆数据*内存中所有操作的目标:数据**算术运算**逻辑运算**赋值**运行函数 fun()什么是内存*内存条通电后产生的可存储数据的空间(临时的)*内存产生和死亡:内存条(电路板)>通电>产生内存空间==>存储数据==>处理数据==>断...原创 2020-04-30 11:15:24 · 210 阅读 · 0 评论 -
JS高级教程知识整理——01数据类型
1.分类(两类)-基本(值)类型*String : 任意字符串*Number: 任意数字*boolean: true/false*undefined:undefined*null: null-对象(引用)类型*Object: 任意对象*Function: 一种特别的对象(可以执行)*Array: 一种特别的对象(数值下标,内部数据是有序的)2.判断对象的三种方法* t...原创 2020-04-30 10:04:35 · 224 阅读 · 0 评论