JavaScript 中的 this

this 是一個根據使用位置有不同值的關鍵字。不了解 JavaScript 中這個微小的細節可能會帶來很多困擾,所以花五分鐘的時間來學習所有的技巧是值得的。 this 在嚴格模式下 在任何物件之外,在嚴格模式下,this 的值總是 undefined。 請注意,我提到了嚴格模式。如果未啟用嚴格模式(如果你的文件頂部沒有明確添加 'use strict'),你將處於所謂的松散模式,而 this - 除非下面特殊情況中提到的 - 將具有全局物件的值。 這意味著在瀏覽器上下文中是 window。 方法中的 this 方法是附加到物件的函式。 你可以以各種形式看到它。 以下是其中一種: const car = { maker: 'Ford', model: 'Fiesta', drive() { console.log(`Driving a ${this.maker} ${this.model} car!`) } } car.drive() //Driving a Ford Fiesta car! 在這種情況下,使用一般函式,this 會自動綁定到物件。 注意:上述的方法宣告與 drive: function() {… 是相同的,只是比較簡短: const car = { maker: 'Ford', model: 'Fiesta', drive: function() { console.log(`Driving a ${this.maker} ${this.model} car!`) } } 在這個例子中也是一樣的:...

在 JavaScript 中使用 call() 和 apply()

了解如何在 JavaScript 中使用 call() 和 apply() 函数以及它们的区别。 call() 和 apply() 是 JavaScript 提供的两个函数,用于执行一个非常特定的任务:调用一个函数并设置其 this 值。 查看我的 “this” 指南 以了解关于这个特定变量的所有细节。 函数可以使用 this 值进行许多不同的用例。问题在于它由环境给出,并且不能从外部改变,除非使用 call() 或 apply()。 当使用这些方法时,您可以传入一个额外的对象,该对象将在调用的函数中用作 this。 这两个函数执行相同的操作,但有一个区别。在 call() 中,您可以将函数参数作为逗号分隔的参数列表传递,可以使用任意数量的参数,而在 apply() 中,您传递一个包含参数的单个数组: const car = { brand: 'Ford', model: 'Fiesta' } const drive = function(from, to, kms) { console.log(`驾驶我的汽车,一辆${this.brand} ${this.model},从 ${from} 开往 ${to},行驶 ${kms} 公里`) } drive.call(car, '米兰', '罗马', 568) drive.apply(car, ['米兰', '罗马', 568]) 请注意,当使用 箭头函数 时,this 不被绑定,因此此方法仅适用于常规函数。