js的学习(学习中)

1.箭头函数的this指向问题
箭头函数的this指向是其定义时所处的上下文的this值,而不是根据函数调用时决定的
普通函数的this值可以在调用时根据不同的调用方式发生变化。
箭头函数没有自己的this,它使用定义时的上下文的this值。
如果箭头函数定义时没有明确的上下文(例如,在全局作用域或模块作用域中),则它的this通常指向全局对象(在浏览器环境中是window)。35
这种特性使得箭头函数在处理回调函数等方面非常有用,因为不需要担心this值的改变。

2.如果派生类中显式定义了构造函数,那么必须在其中调用super(或者返回一个对象)
一个类,它既extends了它的父亲,同时又拥有自己的显性的构造函数(constructor),在这种情况下,它也具有了特殊的内部属性: [[ConstructorKind]]:"derived",该属性会进一步影响它的new行为:
当通过 new 执行一个常规函数时,它将创建一个空对象,并将这个空对象赋值给 this。
但是当继承的 constructor 执行时,它不会执行此操作。它期望父类的 constructor 来完成这项工作。也就是说子类没有自己的this对象,而是继承父亲的this对象,然后进行加工。如果不调用super,子类就得不到this对象
因此,派生的 constructor 必须调用 super 才能执行其父类(base)的 constructor,否则 this 指向的那个对象将不会被创建。并且我们会收到一个报错。

3.JavaScript新增的两个原始数据类型详解(Record和Tuple)
Record是一种类似于对象的数据类型,它由一个键值对组成,键和值都可以有自己的类型
type Person = Record<string, string | number>;
const person: Person = {
name: 'Alice',
age: 30,
address: 'New York'
};

Tuple(元组)是一种类似于数组的数据类型,与数组不同的是,元组中每个元素都可以有自己的类型
type Person = Record<string, string | number> & {
postalCode?: string;
};

const person: Person = {
name: 'Alice',
age: 30
};

4.JS 反射机制及 Reflect
反射机制是在编译阶段不知道是哪个类被加载,而是在运行的时候才加载、执行。
也就是说,反射机制指的是程序在运行时能够获取自身的信息。
js 中的 apply 就是反射机制。

Reflect 是一个内建的对象,用来提供方法去拦截 JavaScript 的操作。
Reflect 不是一个函数对象,所以它是不可构造的,也就是说它不是一个构造器,不能通过 new 操作符去新建或者将其作为一个函数去调用 Reflect 对象。
Reflect 的所有属性和方法都是静态的。
Reflect 内部封装了一系列对对象的底层操作

Reflect 成员方法就是 Proxy 处理对象的默认实现
const proxy = new Proxy(obj, {
get(target, property) {
// 如果没有定义 get 方法,那么默认返回的就是 Reflect 的 get 方法
return Reflect.get(target, property)
}
})

5.词法环境、变量环境(更新中...)

6.函数表达式和函数声明
函数声明
function fcName(){}
函数表达式
const fcName = function(){}
提升(hoisting):函数声明会被提升到代码所在作用域的顶部,而函数表达式不会。这意味着在声明之前调用函数声明是有效的,但调用函数表达式则会报错;
命名:函数声明需要一个函数名,而函数表达式不需要;
作为参数传递:函数表达式可以作为参数传递给其他函数,而函数声明不适合直接传递。

7.宏任务和微任务
有一个点想说一下:(我想确认我以下的观点这是否正确?)
每个宏任务执行完成之后(不会接着执行队列中的下一个宏任务),会检查是否存在待执行的微任务,
这个微任务是当前这个宏任务执行过程中产生的,如果有,则执行完所有的微任务之后,再继续执行下一个宏任务
我觉得下面这个资料写的很好,好好理解吧~
https://blog.csdn.net/lq313131/article/details/127594120

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值