随笔分类 - JavaScript
摘要:代码格式化:shift + alt + f 向上/向下移动一行:alt + 方向键↑/↓ 快速复制一行代码:shift + alt + 方向键↑/↓ 快速查找(也适用于浏览器):ctrl + f 快速替换(没啥用):ctrl + h 快速生成h:h$*6 快速生成ul li :ul>li*3 快速生
阅读全文
摘要:构建DOM树:浏览器先请求HTML,拿到HTML,对HTML进行解析,也就是HTML Parser后,形成一个dom树 然后在解析的过程中,有时候有link标签,是CSS和JS,浏览器主进程负责下载CSS文件 构建CSSOM树:当CSS完成下载,并且DOM树构建完成,开始对CSS进行解析,CSS P
阅读全文
摘要:从知识角度,我们来认识一下: 其实关于变量提升,我们都知道,var会变量提升,下面来看一下let <script> var a = 'a'; function print(){ console.log(a); let a = '1'; } print(); </script> 报错 为啥报错呢:按道
阅读全文
摘要:什么是箭头函数:是一种更简洁的表示方法,但是没有自己的this,arguments,super或new.target。箭头函数适合用在 需要匿名函数的地方,并且它不能作为构造函数。 箭头函数和普通函数的区别: 可以看到,当我们定义一个普通函数,它内部是有argments,caller,prototy
阅读全文
摘要:笼统的说,防抖和节流,就是防止代码被频繁调用。 节流和防抖的区别,就是第几次有效的问题。 节流,可以想象”开源节流“,比如,你想让麻麻买一个棒棒糖,第一次她给你买,但是短时间内,你想要吃第二次,麻麻就不给你买了,也就是说,第一次同意,第二,三次都不同意。 防抖,想象一下得了帕金森的老头,按屏幕,按了
阅读全文
摘要:先说一个现实中的案例,我(对象)能通过Object.getPrototypeOf(我) 找到我的叔叔(构造函数) 同时呢,我叔叔(构造函数)也能通过.constructor找到我或者新建我 其实结合上一篇博文理解更轻松(https://www.cnblogs.com/KeithTee/p/15988
阅读全文
摘要:通过对象找到原型,通过原型的constructor可以找到构造函数,通过构造函数就可以创建出对象。(给我一个对象,我就能生成一个新的对象) <script> function User(name){ this.name = name; } let hd = new User("哈登"); conso
阅读全文
摘要:最近在学原型和继承,发现在构造函数这块有一个过不去的坎,今天就试着弄明白最基本的。 1,构造函数是什么 在我看来,就是一个“模具”,刚开始定义构造函数的时候,因为没有实例化对象,其实它在内存中不占用空间,只有当我们实例化对象以后,内存中才有这个对象的地址。 2,怎么辨别构造函数 最简单的方法就是看有
阅读全文
摘要:__proto__ 每一个变量都有这个属性,指向该对象的构造函数的原型对象。(指向这个对象的父级元素) 例如: number类型 <script> let num = 123; console.log(num.__proto__); //Number构造函数 console.log(num.prot
阅读全文
摘要:换句话说,没有父母的孩子也是存在的,这里的父母不是说父母过世了,而是说,这个孩子就是孤零零的一个人。 我们可以用Object.create()来创建对象 <script> // .create()后面有2个参数,第一个参数是他的原型 // 第二个参数是这个对象的属性 let hd = Object.
阅读全文
摘要:js中的各种元素,就像生活中的我们,我们有父母,有爷爷...各种元素也有“爸爸”,“爷爷”.. 例如,数组, <script> let arr = ["jamesHarden"]; console.log(arr.concat("leBron")); </script> 控制台输出: 我们点开,看里
阅读全文
摘要:var声明的变量会挂载到windows上,let和const不会 var声明的变量存在变量提升,let和const不存在。(什么是变量提升,请看https://www.cnblogs.com/KeithTee/p/15959380.html) 同一个作用域下,var可以声明同名变量,let,cons
阅读全文
摘要:声明和定义: <script> //第一种:在执行构造的时候,传递参数 let hd = new Set([1, 2, 3, 4]); console.log(hd); //输出 {1, 2, 3, 4} //第二种,hd.add()添加 let harden = new Set(); harden
阅读全文
摘要:Symbol应用场景:避免同名覆盖 声明定义Symbol的几种方法: <script> //Symbol理解为:永远不会重复的字符串 let hd = Symbol("123"); console.log(hd); let stepback = Symbol.for("后撤步"); console.
阅读全文
摘要:数组是引用类型,体现在:当我们定义一个数组,typeof array时,输出的是object 还有一个例子: <script> let array = [1,2,3,4]; let hd = array; hd[1] = 9; console.log(hd); console.log(array);
阅读全文
摘要:基本函数类型: <script> //判断是否整数 let num = 99; console.log(Number.isInteger(num)); let num_1 = 99.9; console.log(Number.isInteger(num_1)); //小数点后第几位四舍五入 let
阅读全文
摘要:字符串的基本操作: <script> //打印name的长度 //.length,没有括号的就是属性,不是函数 let name = " James Harden "; console.log(name.length); //全部转换为大写,有括号的是函数 console.log(name.toUp
阅读全文
摘要:显性布尔类型转换: <script> //显示转换布尔类型 let num = 0; console.log(typeof num); //一个!是非,分2步,先转换成布尔类型,再取反 //两个!!转换完后,0是布尔类型的false,取反再取反 //也就是false num = !!num; con
阅读全文