《你不知道的Javascript》上卷第二部分(总结)

《你不知道的Javascript》上卷第二部分(总结)

💡 原文中文,约7400字,阅读约需18分钟。
📝

内容提要

本文讨论了JavaScript中的`this`关键字及其绑定规则,包括默认绑定、隐式绑定、显示绑定和new绑定。`this`的指向取决于函数的调用方式,严格模式下会绑定为`undefined`。还介绍了箭头函数的`this`绑定特性,以及对象和数组的定义与属性访问,最后提到原型链和类的概念,强调理解这些知识点的重要性。

🔎

延伸解读

this 绑定规则的实际应用

文章详细介绍了 this 的四种绑定规则:默认绑定、隐式绑定、显示绑定和 new 绑定。理解这些规则有助于预测函数调用时 this 的指向。例如,在事件处理或回调中,this 可能不是预期的对象,此时可以使用 bind 或箭头函数来固定 this。严格模式下默认绑定为 undefined,这可以避免意外修改全局对象。

箭头函数的 this 特性

箭头函数不适用 this 的四种标准规则,而是根据外层作用域决定 this。这意味着箭头函数一旦创建,其 this 就被固定,无法通过 call、apply 或 new 修改。这适合在回调中保持 this 一致性,但也可能导致意外行为,比如在对象方法中使用箭头函数时,this 不会指向该对象。

对象属性与原型链的细节

文章指出对象键名总是字符串,即使使用数字也会被转换。数组也是对象,添加非数字属性不会改变长度,但数字索引会。原型链方面,Object.create() 可以创建继承自指定原型的新对象,但赋值时可能触发原型上的 setter 或忽略不可写属性。理解这些细节有助于避免意外的属性屏蔽和继承问题。

❓

Q&A

JavaScript中的this关键字是如何绑定的?

this的绑定规则包括默认绑定、隐式绑定、显示绑定和new绑定,具体取决于函数的调用方式。

严格模式下,this的默认绑定会是什么?

在严格模式下,默认绑定会将this绑定为undefined。

箭头函数的this是如何绑定的?

箭头函数的this绑定特性是根据外层作用域决定的,无法被修改。

如何使用call和apply方法绑定this?

可以使用call和apply方法来显示绑定this,允许你指定函数调用时的上下文对象。

JavaScript中的类是如何定义的?

JavaScript中的类使用class关键字定义,类的实例化使用new操作符。

原型链在JavaScript中有什么作用?

原型链是JavaScript对象继承的基础,允许对象通过原型访问属性和方法。

🏷️

标签

➡️

继续阅读