随笔分类 - JavaScript
常见的JavaScript问题,以及对于语法的理解
JavaScript 引用数据类型
摘要:1. 问题描述 今天在写一个代码题时候, 有一个BUG 导致自己停滞好久, 该BUG 可以描述为如下代码: PS: 由于原题是算法题, 为了叙述方便以及展示重点考虑, 这里只复现BUG, 不提供原场景. const log = console.log.bind(console) let obj =
阅读全文
this 的指向
摘要:1. JavaScript 中this 的指向 1.1 函数中this 的指向 JavaScript 中, 有3种类型的函数: 箭头函数, 函数声明式, 函数表达式; 它们的this 指向可以分类为: 箭头函数: 箭头函数中的this 指向上一层环境作用域 函数声明式/函数表达式: 函数声明式/函数
阅读全文
闭包
摘要:1. 闭包的定义 闭包是指有权访问另一个函数作用域中的变量的函数. 2. 闭包的常见表现形式 1. 在函数中返回一个函数 2. 立即调用匿名函数(IIFE) 3. 闭包涉及的特性 3.1 垃圾回收机制 JavaScript 的垃圾回收机制是自动回收, 回收的标准是只要一个变量在内存中还存在着引用,
阅读全文
原型链继承需要注意的问题
摘要:背景: JavaScript的继承基本上可以分为两大类,一类是使用class定义的类使用extends继承;另一类是使用function定义的类基于原型链的继承。之前自己看过一遍JavaScript高级程序设计,但是今天在第二遍快速过的时候发现了两个之前自己没有注意的点。 需要注意点: 1. 给原型
阅读全文
创建类的方式
摘要:背景: ES6之前,也就是没有class关键字之前,JS一直使用的是函数和原型链结合的方式来创造类,下面就对于一些基本的方式来进行一个整合。 具体方式: 1. 工厂模式: 缺点: ①. 类的共同属性没有被明显区分;例如上面的person1对象和person2对象的sayName方法根本上不是用一个方
阅读全文
使用setTimeout()代替setInterval()
摘要:背景: 在JavaScript中,有两种定时器:setTimeout()和setInterval();setTimeout()只执行一次定时操作,setInterval()执行无限次定时操作;但是大多数的观点均是尽可能多使用setTimeout(),多次定数操作也是十使用setTimeout()代替
阅读全文
箭头函数中的this
摘要:JavaScript的函数(函数声明式)中,this指向的是运行时的作用域,如果没有对象调用函数,则this指向 global/window,但是在箭头函数中,this的指向是固化的,如下面代码所示: 那么怎样理解输出的结果呢?其实只需要搞清楚在第4行和第7行中两个函数this的指向就行了。 在第4
阅读全文
函数的作用域
摘要:今天在读《ES6标准入门》的时候,发现了两段很有意思的代码: 可以看到,仅仅是改变了第3行 x 变量的修饰语句,结果就发生了很大的变化,而发生这个变化的关键因素就是在这个过程中,变量的作用域发生了变化,要理解其中发生的原理,首先要明白一个函数作用域的基本知识,如下面图片所示: 理解的过程如下面代码所
阅读全文
JavaScript中对象的比较
摘要:问题描述: 在JavaScript中,数值的比较是比较简单的,使用相等(==)和全等( )符号基本上可以解决大多数非对象的比较;但是相等(==)和全等( )符号在对象 object 的比较上,就不能满足所有的要求了,如下面的代码: 1 let obj_a = { 2 name: "jack", 3
阅读全文