欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript中this的定義

在javascript中,this關鍵字經(jīng)常被用到,它代表當前函數(shù)執(zhí)行的上下文,即執(zhí)行當前函數(shù)的對象。不同的上下文對應不同的this值,this值在函數(shù)執(zhí)行時才確定。

在全局作用域中,this指向window對象:

console.log(this); // Window

在函數(shù)中,方法調用決定了this的值,如果是通過對象來調用函數(shù),那么this就指向這個對象:

var obj = {
name: "Tom",
sayHello: function() {
console.log(this.name); // Tom
}
};
obj.sayHello();

如果是通過函數(shù)名調用函數(shù),這個函數(shù)是在全局作用域中調用的,this會指向window對象:

var name = "Jack";
function sayName() {
console.log(this.name); // Jack
}
sayName();

用call()或apply()方法調用函數(shù)時,可以指定函數(shù)執(zhí)行時的上下文,即指定this的值:

var obj1 = {
name: "Mike"
};
var obj2 = {
name: "John"
};
function sayName() {
console.log(this.name);
}
sayName.call(obj1); // Mike
sayName.apply(obj2); // John

構造函數(shù)中的this指向新創(chuàng)建的對象:

function Person(name) {
this.name = name;
this.sayHello = function() {
console.log("Hello " + this.name);
}
}
var p1 = new Person("Tom");
p1.sayHello(); // Hello Tom

在箭頭函數(shù)中,this指的是函數(shù)定義時所在的上下文,而不是調用時所在的上下文,箭頭函數(shù)不能通過call()或apply()方法改變this的值:

var obj = {
name: "Tom",
sayHello: function() {
setTimeout(() => {
console.log(this.name); // Tom
}, 1000);
}
};
obj.sayHello();

在javascript中,this的值經(jīng)常會變化,需要根據(jù)具體情況來確定當前函數(shù)執(zhí)行的上下文,進而確定this的值。