12 2021 档案
摘要:进程与线程 -- 涉及⾯试题:进程与线程区别? JS 单线程带来的好处? JS 是单线程执⾏的,但是你是否疑惑过什么是线程? 讲到线程,那么肯定也得说⼀下进程。本质上来说,两个名词都是 CPU ⼯作时间⽚的⼀个描述。 进程描述了 CPU 在运⾏指令及加载和保存上下⽂所需的时间,放在应⽤上来说就代表了
阅读全文
摘要:// 三个常量⽤于表示状态 const PENDING = 'pending' const RESOLVED = 'resolved' const REJECTED = 'rejected' function MyPromise(fn) { const that = this this.state
阅读全文
摘要:涉及⾯试题: 为什么要使⽤模块化? 都有哪⼏种⽅式可以实现模块化,各有什么特点? 使⽤⼀个技术肯定是有原因的,那么使⽤模块化可以给我们带来以下好处: · 解决命名冲突 · 提供复⽤性 · 提⾼代码可维护性 ⽴即执⾏函数 在早期,使用 立即执⾏函数 实现模块化是常⻅的⼿段,通过函数作⽤域解决了命名冲突
阅读全文
摘要:涉及面试题: 原型如何实现继承? Class 如何实现继承? Class 本质是什么? ⾸先先来讲下 class ,其实在 JS 中并不存在类, class 只是语法糖,本质还是函数。 class Person {} Person instanceof Function // true 组合继承 组
阅读全文
摘要:涉及⾯试题:什么是提升?什么是暂时性死区?var、let 及 const 区别? 函数提升优先于变量提升,函数提升会把整个函数挪到作⽤域顶部,变量提升只会把声明 挪到作⽤域顶部。 var 存在提升,我们能在声明之前使⽤。 let 、 const 因为暂时性死区的原因,不能在声明前使⽤。 var 在全
阅读全文
摘要:原型链就是多个对象通过 __proto__ 的⽅式连接了起来。 为什么 obj 可以 访问到 valueOf 函数,就是因为 obj 通过原型链找到了 valueOf 函数。 * Object 是所有对象的爸爸,所有对象都可以通过 `__proto__` 找到它 * Function 是所有函数的爸
阅读全文
摘要:浅拷贝 ⾸先可以通过 Object.assign 来解决这个问题,很多⼈认为这个函数是⽤来 深拷⻉的。其实并不是, Object.assign 只会拷⻉所有的属性值到新的对象中,如果属性值是对象的话,拷⻉的是地址,所以并不是深拷⻉。 let a = { age: 1 } let b = Object
阅读全文
摘要:什么是闭包? 闭包是指有权访问另外一个函数作用域中的局部变量的函数。 声明在一个函数中的函数,叫做闭包函数。 而且内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。 闭包有三个特性: 1.函数嵌套函数; 2.函数内部可以引用外部的参数和变量; 3.参数
阅读全文
摘要:对于 == 来说,如果对⽐双⽅的类型不⼀样的话,就会进⾏类型转换; 假如我们需要对⽐ x 和 y 是否相同,就会进⾏如下判断流程 ⾸先会判断两者类型是否相同。相同的话就是⽐⼤⼩了 类型不相同的话,那么就会进⾏类型转换 会先判断是否在对⽐ null 和 undefined ,是的话就会返回 true
阅读全文
摘要:function foo() { console.log(this.a) } var a = 1 foo() const obj = { a: 2, foo: foo } obj.foo() const c = new foo() 对于直接调用 foo 来说,不管foo函数被放在什么位置,this
阅读全文