在javascript中,this关键字经常被用到,它代表当前函数执行的上下文,即执行当前函数的对象。不同的上下文对应不同的this值,this值在函数执行时才确定。
在全局作用域中,this指向window对象:
console.log(this); // Window
在函数中,方法调用决定了this的值,如果是通过对象来调用函数,那么this就指向这个对象:
var obj = {name: "Tom",sayHello: function() {console.log(this.name); // Tom}};obj.sayHello();如果是通过函数名调用函数,这个函数是在全局作用域中调用的,this会指向window对象:
var name = "Jack";function sayName() {console.log(this.name); // Jack}sayName();用call()或apply()方法调用函数时,可以指定函数执行时的上下文,即指定this的值:
var obj1 = {name: "Mike"};var obj2 = {name: "John"};function sayName() {console.log(this.name);}sayName.call(obj1); // MikesayName.apply(obj2); // John构造函数中的this指向新创建的对象:
function Person(name) {this.name = name;this.sayHello = function() {console.log("Hello " + this.name);}}var p1 = new Person("Tom");p1.sayHello(); // Hello Tom在箭头函数中,this指的是函数定义时所在的上下文,而不是调用时所在的上下文,箭头函数不能通过call()或apply()方法改变this的值:
var obj = {name: "Tom",sayHello: function() {setTimeout(() => {console.log(this.name); // Tom}, 1000);}};obj.sayHello();在javascript中,this的值经常会变化,需要根据具体情况来确定当前函数执行的上下文,进而确定this的值。
上一篇:css打印浏览器
下一篇:javascript中使用事件有









