
高级
Onedean
Stay Hungry,Stay Foolish
展开
-
【JavaScript高级】6、函数高级(执行上下文与执行上下文栈)
一、变量提升与函数提升1. 变量声明提升 * 通过var定义(声明)的变量, 在定义语句之前就可以访问到 * 值: undefined2. 函数声明提升 * 通过function声明的函数, 在之前就可以直接调用 * 值: 函数定义(对象)3. 问题: 变量提升和函数提升是如何产生的?<!DOCTYPE html><html lang="en...原创 2018-12-26 22:24:40 · 280 阅读 · 2 评论 -
【JavaScript高级】16、线程机制与事件机制笔记
线程与进程进程:程序的一次执行, 它占有一片独有的内存空间可以通过windows任务管理器查看进程线程:是进程内的一个独立执行单元是程序执行的一个完整流程是CPU的最小的调度单元关系一个进程至少有一个线程(主)程序是在某个进程中的某个线程执行的浏览器内核模块组成主线程js引擎模块 : 负责js程序的编译与运行html,css文档解析模块 : 负...原创 2019-01-01 14:58:58 · 143 阅读 · 0 评论 -
【ECMAScript 5_6_7】15、ES6——字符串/数值/数组/对象扩展
一、字符串扩展1. includes(str) : 判断是否包含指定的字符串2. startsWith(str) : 判断是否以指定字符串开头3. endsWith(str) : 判断是否以指定字符串结尾4. repeat(count) : 重复指定次数<!DOCTYPE html><html lang="en"><head> <...原创 2019-02-27 20:03:02 · 169 阅读 · 0 评论 -
【ECMAScript 5_6_7】16、ES6——深度克隆知识点及其扩展
1、数据类型* 数据分为基本的数据类型(String, Number, boolean, Null, Undefined)和对象数据类型- 基本数据类型: 特点: 存储的是该对象的实际数据(拷贝后会生成一份新的数据,修改拷贝以后的数据不会影响原数据)- 对象/数组数据类型: 特点: 存储的是该对象在栈中引用,真实的数据存放在堆内存里(拷贝后不会生成新的数据,而是拷贝引用,...原创 2019-02-27 20:47:20 · 292 阅读 · 0 评论 -
【ECMAScript 5_6_7】13、ES6——async/await语法糖函数(异步回调问题最终解决方案)
async函数(源自ES2017)概念:真正意义上去解决异步回调的问题,用用同步流程来表达异步操作本质:Generator函数的语法糖语法:async function foo (){ await 异步操作 await 异步操作}特点:1、不需要向Generator函数去调用next()方法,而是遇到await就等待,直到当前异步操作完成就继续...原创 2019-02-27 12:39:17 · 485 阅读 · 0 评论 -
【ECMAScript 5_6_7】14、ES6——模拟基于类的编程风格关键词class
class关键词:1. 通过class定义类/实现类的继承2. 在类中通过constructor定义构造方法3. 通过new来创建类的实例4. 通过extends来实现类的继承5. 通过super调用父类的构造方法6. 重写从父类中继承的一般方法<!DOCTYPE html><html lang="en"><head> <...原创 2019-02-27 12:46:57 · 148 阅读 · 0 评论 -
【ECMAScript 5_6_7】12、ES6——Generator函数(异步回调问题解决方案二)
Generator函数概念: 1、ES6提供的解决异步编程的方案之一 2、Generator函数是一个状态机,内部封装了不同状态的数据, 3、用来生成遍历器对象 4、可暂停函数(惰性求值函数), yield可暂停,next方法可启动。每次返回的是yield后的表达式结果特点:1、function 与函数名之间有一个星号2、内部用yield表达式来定义...原创 2019-02-26 19:57:29 · 184 阅读 · 0 评论 -
【ECMAScript 5_6_7】11、ES6——Itetetator遍历器
概念:iterator是一种接口机制,为各种不同的数据结构提供统一的访问机制作用:1、为各种数据结构,提供一个统一的、简便的访问接口;2、使得数据结构的成员能够按某种次序排列3、ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for...of消费工作原理:- 创建一个指针对象(遍历器对象),指向数据结构的起始位置。- 第一次调用ne...原创 2019-02-26 19:18:34 · 242 阅读 · 0 评论 -
【ECMAScript 5_6_7】10、ES6——Symbol
前言:ES5中对象的属性名都是字符串,容易造成重名,污染环境 Symbol:概念: ES6中添加了一种原始数据类型(已有的原始数据类型:String,Number,Boolean,Null,Undefined,Object)特点: 1、Symbol属性对应的值是唯一的,解决命名冲突问题 2、Symbol值不能与其他数据进行计算,包括和字符串拼串...原创 2019-02-26 18:47:55 · 140 阅读 · 0 评论 -
【JavaScript高级】15、对象高级笔记
对象的创建模式Object构造函数模式var obj = {};obj.name = 'Tom'obj.setName = function(name){this.name=name}对象字面量模式var obj = { name : 'Tom', setName : function(name){this.name = name}}构造函数模式function Pe...原创 2019-01-01 14:57:17 · 228 阅读 · 0 评论 -
【JavaScript高级】14、函数高级笔记
原型与原型链所有函数都有一个特别的属性:prototype : 显式原型属性所有实例对象都有一个特别的属性:__proto__ : 隐式原型属性显式原型与隐式原型的关系函数的prototype: 定义函数时被自动赋值, 值默认为{}, 即用为原型对象实例对象的__proto__: 在创建实例对象时被自动添加, 并赋值为构造函数的prototype值原型对象即为当前实...原创 2019-01-01 14:56:15 · 155 阅读 · 0 评论 -
【JavaScript高级】7、函数高级(作用域与作用链)
一、作用域1. 理解 * 就是一块"地盘", 一个代码段所在的区域 * 它是静态的(相对于上下文对象), 在编写代码时就确定了2. 分类 * 全局作用域 * 函数作用域 * 没有块作用域(ES6有了)3. 作用 * 隔离变量,不同作用域下同名变量不会有冲突<!DOCTYPE html><html lang="en"><h...原创 2018-12-26 22:57:20 · 113 阅读 · 0 评论 -
【JavaScript高级】8、函数高级(闭包)
引入需求: 点击某个按钮, 提示"点击的是第n个按钮"此时传统方法想要在函数内部使用函数外部变量时,操作十分麻烦,必须将其变为调用函数的属性的属性值,通过this.属性使用,因此采用回调函数内传入,相当于内部函数应用了嵌套的外部函数的变量,实际上这就是闭包。<!DOCTYPE html><html lang="en"><head> &...原创 2018-12-26 23:43:15 · 201 阅读 · 0 评论 -
JavaScript this 总结(含 ES6)
本文主要总结自《JavaScript 语言精粹》、部分总结自《JavaScript 高级程序设计》以及自己的经验四种调用模式在 JavaScript 中,this 的值取决于调用模式,有四种调用模式,分别是方法调用模式、函数调用模式、构造器调用模式、Apply、call 调用模式。方法调用模式当一个函数被保存为对象的一个属性时,我们称它为一个方法。当方法被调用时(通过 . ...转载 2018-12-26 23:52:02 · 121 阅读 · 0 评论 -
【JavaScript高级】9、对象高级(对象创建模式)
一、Object构造函数模式方式一: Object构造函数模式 * 套路: 先创建空Object对象, 再动态添加属性/方法 * 适用场景: 起始时不确定对象内部数据 * 问题: 语句太多<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> &原创 2018-12-27 00:19:34 · 105 阅读 · 0 评论 -
【JavaScript高级】10、对象高级(继承模式)
一、原型链继承方式1: 原型链继承 1. 套路 1. 定义父类型构造函数 2. 给父类型的原型添加方法 3. 定义子类型的构造函数 4. 创建父类型的对象赋值给子类型的原型 5. 将子类型原型的构造属性设置为子类型 6. 给子类型原型添加方法 7. 创建子类型的对象: 可以调用父类型的方法 2. 关键 1. 子类型的原...原创 2018-12-27 00:25:00 · 212 阅读 · 0 评论 -
【JavaScript高级】11、线程机制和事件机制
一、进程与线程1. 进程:程序的一次执行, 它占有一片独有的内存空间2. 线程: CPU的基本调度单位, 是程序执行的一个完整流程3. 进程与线程 * 一个进程中一般至少有一个运行的线程: 主线程 * 一个进程中也可以同时运行多个线程, 我们会说程序是多线程运行的 * 一个进程内的数据可以供其中的多个线程直接共享 * 多个进程之间的数据是不能直接共享的4. 浏览器运行...原创 2018-12-27 00:42:43 · 143 阅读 · 0 评论 -
【JavaScript高级】12、补充
一、分号问题:1. js一条语句的后面可以不加分号2. 是否加分号是编码风格问题, 没有应该不应该,只有自己喜欢不喜欢3. 在下面2种情况下不加分号会有问题 * 小括号开头的前一条语句 * 中方括号开头的前一条语句4. 解决办法: 在行首加分号5. 强有力的例子: vue.js库<!DOCTYPE html><html lang="en">...原创 2019-01-01 14:50:14 · 311 阅读 · 0 评论 -
【JavaScript高级】13、基础总结深入笔记
数据类型的分类和判断基本(值)类型Number ----- 任意数值 -------- typeofString ----- 任意字符串 ------ typeofBoolean ---- true/false ----- typeofundefined — undefined ----- typeof/===null -------- null ---------- ===...原创 2019-01-01 14:54:38 · 141 阅读 · 0 评论 -
【ECMAScript 5_6_7】9、ES6——Promise对象(异步回调问题解决方案一)
一、理解:* Promise对象: 代表了未来某个将要发生的事件(通常是一个异步操作)* 有了promise对象, 可以将异步操作以同步的流程表达出来, 避免了层层嵌套的回调函数(俗称'回调地狱')* ES6的Promise是一个构造函数, 用来生成promise实例二、使用promise基本步骤(2步): 1、创建promise对象let promise = new...原创 2019-02-26 13:08:31 · 420 阅读 · 0 评论