随笔分类 - javaScript
js相关的所有随笔。
摘要:24种假值比较引发的思考 极端情况下该如何分析 比较运算的强制类型转换完全解答 一、24种假值比较引发的思考 摘录《你不知道的JavaScript 中卷》第一部分 类型转换 4.5.3 1 "0" == null; //false 2 "0" == undefined; //false 3 "0"
阅读全文
摘要:注册一个全局指令:实现在document上注册注册全局点击事件 关于自定义指令的相关参数解析 一、注册一个全局指令 示例代码: 1 // 自定义指令: v-document-click(全局点击事件) 2 Vue.directive('document-click', { 3 bind: funct
阅读全文
摘要:配置手动编译TS文件工作环境 配置webpack自动化打包编译工作环境(后面补充) 一、TypeScript入门学习引言 进入主题之前,首先说明这个系列的博客是我刚刚接触TypeScript的学习笔记,可能不会太深入的解读一些原理方面的东西。但尽可能的把基础的入门使用解析清楚,毕竟使用TypeScr
阅读全文
摘要:webpack4打包配置babel7转码ES6 Module语法与API的使用 import() Module加载实现原理 Commonjs规范的模块与ES6模块的差异 ES6模块与Nodejs模块相互加载 模块循环加载 一、webpack4打包配置babel7转码ES6 1.webpack.con
阅读全文
摘要:生成器的基本使用 生成器 + Promise async+await Promise化之Promisify工具方法 一、生成器的基本使用 在介绍生成器的使用之前,可以简单理解生成器实质上生成的就是一个迭代器,所以如果理解了迭代器在学习生成器就会非常简单,我的上一篇博客就是迭代器的详细解析ES6入门:
阅读全文
摘要:迭代模式 ES6迭代器标准化接口 迭代循环 自定义迭代器 迭代器消耗 一、迭代模式 迭代模式中,通常有一个包含某种数据集合的对象。该数据可能存在一个复杂数据结构内部,而要提供一种简单的方法能够访问数据结构中每个元素。对象消费者并不需要知道如何组织数据,所有需要做的就是取出单个数据进行工作。 迭代模式
阅读全文
摘要:JS第七种数据类型:Symbol Symbol的应用场景 11个Symbol静态属性 Symbol元编程 一、JS第七种数据类型:Symbol 在ES6之前的JavaScript的基本数据类型有undefined、null、boolean、number、string、object,现在Symbol作
阅读全文
摘要:Promise的基本使用入门: ——实例化promise对象与注册回调 ——宏任务与微任务的执行顺序 ——then方法的链式调用与抛出错误(throw new Error) ——链式调用的返回值与传值 Promise的基本使用进阶: ——then、catch、finally的使用 ——all、rac
阅读全文
摘要:一、节流(throttle) 用来实现阻止在短时间内重复多次触发同一个函数。主要用途:防止使用脚本循环触发网络请求的函数的恶意行为,确保请求的真实性(当然也包括其他阻止高频触发行为的应用); 实现原理图: 代码实现: 节流函数测试: 二、防抖 用来实现高频触发函数调用时,实际只调用最后一次函数执行。
阅读全文
摘要:什么是数据劫持 Object数据劫持实现原理 Array数据劫持的实现原理 Proxy、Reflect 一、什么是数据劫持 定义:访问或者修改对象的某个属性时,在访问和修改属性值时,除了执行基本的数据获取和修改操作以外,还基于数据的操作行为,以数据为基础去执行额外的操作。 当前最经典的数据劫持应用就
阅读全文
摘要:基本语法 继承 私有属性与方法、静态属性与方法 修饰器(Decorator) 一、基本语法 将ES6的class类示例用ES5语法实现: 1.1Class简单说明: Class声明的类本质上还是一个函数: 类虽然是函数,但是不能直接被调用执行,必须使用new指令执行构造行为: constructor
阅读全文
摘要:JavaScript基于原型的对象机制 JavaScript原型上的哪些事 一、JavaScript基于原型的对象机制 JavaScript对象是基于原型的面向对象机制。在一定程度上js基于原型的对象机制依然维持了类的基本特征:抽象、封装、继承、多态。面向类的设计模式:实例化、继承、多态,这些无法直
阅读全文
摘要:JavaScript对象语法、类型、属性 属性描述符(getOwnPropertyDescriptor()、defineProperty()) [[Get]]、[[Put]]、Getter、Setter 有必要了解Ojbect原型上的那些方法 一、JavaScript对象语法、类型、属性、方法 1.
阅读全文
摘要:什么是函数尾调用和尾递归 函数尾调用与尾递归的应用 一、什么是函数的尾调用和尾递归 函数尾调用就是指函数的最后一步是调用另一个函数。 调用最后一步和最后一行代码的区别,最后一步的代码并不一定会在最后一行,比如示例二。还有下面这一种不能叫做函数尾调用: 为什么这种情况不叫作函数的尾调用呢?原因很简单,
阅读全文
摘要:柯里化原理 如何实现柯里化 柯里化的应用 一、柯里化原理 柯里化:在数学和计算机科学中,柯里化是一种使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。 前端使用柯里化的用途主要就应该是简化代码结构,提高系统的维护性,一个方法,只有一个参数,强制了功能的单一性,很自然就做到了功能内聚,降低耦
阅读全文
摘要:纯函数 一、纯函数 定义:纯函数是指不依赖并且不修改其作用域之外的函数。通过以下几个示例来认识纯函数: 给函数传入参数时,函数是通过自身的形参变量接收这个参数的值(栈内存),因为上面示例传入的是一个原始值类型的参数,所以函数不会依赖外部参数a。但是要注意的是如果函数执行时传入的是一个引用值类型的参数
阅读全文
摘要:箭头函数的基本用法与特点 函数与ES6新语法 一、箭头函数的基本用法与特点 声明箭头函数采用声明变量和常量的关键字:var、let、const 箭头函数的参数:没有参数用"()"空括号表示、一个参数可以不写括号、多个参数用"(a,b,c)"括号包裹 使用箭头“=>”连接参数与执行块"{}"。 如果执
阅读全文
摘要:简洁属性与简洁方法 计算属性名与[[prototype]] super对象(暂时保留解析) 模板字面量(模板字符串) 一、简洁属性与简洁方法 ES6中为了不断优化代码,减低代码的耦合度在语法上下了很大的功夫,上一篇博客解构就是其中一种,在对象属性和方法名称上也有所优化,也就是这篇博客要解析的简洁属性
阅读全文
摘要:数组解构 对象解构 声明与解构相关的问题 解构与重复赋值 按需解构 默认值赋值 解构参数 解构(destructuring):结构化赋值 解构通常被看作ES6的一个结构化赋值方法,可以通过解构将数组元素或者对象属性拆分出来,成为单个变量。并且在命名相同的情况下可以实现名称复用,以达到减少代码量的目的
阅读全文
摘要:默认值 默认值表达式 需要注意的是,这种默认值和默认表达式在IE的最新版本中仍然没有得到兼容,只能通过编译转码的方式降级到ES5使用。 一、默认值 在函数声明时可以给形参赋默认值,当调用函数时不传入或者传入undefined的时候,函数会使用默认值进行计算。 示例: ES5编译结果: 二、默认值表达
阅读全文