网站怎么赚钱的,公众号制作教程,化州 网站建设,无备案网站做cdn目录 对this对象的理解1. 函数调用模式#xff1a;2. 方法调用模式#xff1a;3. 构造器调用模式#xff1a;4. apply、call和bind调用模式#xff1a; 对this对象的理解
在JavaScript中#xff0c;this关键字是一个非常重要的概念#xff0c;它用于指向当前执行上下文中… 目录 对this对象的理解1. 函数调用模式2. 方法调用模式3. 构造器调用模式4. apply、call和bind调用模式 对this对象的理解
在JavaScript中this关键字是一个非常重要的概念它用于指向当前执行上下文中的对象。具体来说this的值是在函数调用时确定的它的值取决于函数的调用方式。
在JavaScript中this的指向可以通过四种调用模式来判断
1. 函数调用模式
当一个函数不是一个对象的属性时直接作为函数来调用时this指向全局对象在浏览器中是window对象在Node.js中是global对象。例如
function test() {console.log(this)
}test() // 输出全局对象一般是window对象2. 方法调用模式
如果一个函数作为一个对象的方法来调用时this指向这个对象。例如
var obj {name: Xin,sayName: function () {console.log(this.name)}
}obj.sayName() // 输出Xin3. 构造器调用模式
如果一个函数用new调用时函数执行前会新创建一个对象this指向这个新创建的对象。例如
function Person(name) {this.name name
}var person new Person(Xin)
console.log(person.name) // 输出Xin4. apply、call和bind调用模式
这三个方法都可以显示的指定调用函数的this指向。其中apply方法接收两个参数一个是this绑定的对象一个是参数数组。call方法接收的参数第一个是this绑定的对象后面的其余参数是传入函数执行的参数。也就是说在使用call()方法时传递给函数的参数必须逐个列举出来。bind方法通过传入一个对象返回一个this绑定了传入对象的新函数。这个函数的this指向除了使用new时会被改变其他情况下都不会改变。例如
function sayName() {console.log(this.name)
}var obj1 {name: John
}var obj2 {name: Mike
}sayName.call(obj1) // 输出John
sayName.call(obj2) // 输出Mikevar boundSayName sayName.bind(obj1)
boundSayName() // 输出John需要注意的是在JavaScript中函数嵌套时this的指向可能会发生变化。在这种情况下需要使用that或self等变量来保存正确的this指向。另外在使用箭头函数时this的指向与普通函数不同它的值继承自外层函数的this值。 持续学习总结记录中回顾一下上面的内容 在JavaScript中this关键字是一个非常重要的概念它用于指向当前执行上下文中的对象。this的指向可以通过四种调用模式来判断。需要注意在函数嵌套和使用箭头函数时this的指向可能会发生变化。