色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 關(guān)鍵字 this

在JavaScript中,關(guān)鍵字this非常重要,它用于指代當(dāng)前對象或者當(dāng)前執(zhí)行上下文。this的指向是動態(tài)、隨著上下文的改變而改變的。

舉個(gè)例子:

var name = "Tom";
var person = {
name: "John",
sayName: function() {
console.log(this.name);
}
}
person.sayName(); // "John"

在上面的代碼中,this指代的是person對象,因?yàn)樵摵瘮?shù)是在person對象上調(diào)用的。如果sayName()函數(shù)是直接在全局作用域下調(diào)用的,那么this指代的就是window對象。

在使用ES6的類聲明中,this也可以用于指代類的實(shí)例對象:

class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayName() {
console.log(this.name);
}
}
var person = new Person("Tom", 18);
person.sayName(); // "Tom"

在上面的代碼中,this指代的就是person實(shí)例對象。

除了以上的例子,this還可以用于指代構(gòu)造函數(shù)中的實(shí)例對象:

function Person(name, age) {
this.name = name;
this.age = age;
this.sayName = function() {
console.log(this.name);
}
}
var person = new Person("Tom", 18);
person.sayName(); // "Tom"

在上面的代碼中,this指代的就是構(gòu)造函數(shù)Person的實(shí)例對象。

雖然this的行為非常靈活,但有時(shí)候也會帶來一些問題。比如在嵌套函數(shù)中使用this時(shí),可能會造成指向錯(cuò)誤:

var person = {
name: "Tom",
friends: ["John", "Bob"],
sayFriends: function() {
this.friends.forEach(function(friend) {
console.log(this.name + "的朋友是" + friend);
});
}
}
person.sayFriends(); // "undefined的朋友是John","undefined的朋友是Bob"

在上面的代碼中,forEach中的函數(shù)中的this指向的是window對象。為了避免這個(gè)問題,可以使用箭頭函數(shù)替代:

var person = {
name: "Tom",
friends: ["John", "Bob"],
sayFriends: function() {
this.friends.forEach((friend) =>{
console.log(this.name + "的朋友是" + friend);
});
}
}
person.sayFriends(); // "Tom的朋友是John","Tom的朋友是Bob"

這樣,箭頭函數(shù)的this就指向了外層函數(shù)的this。

總之,this是JavaScript中一個(gè)十分重要的關(guān)鍵字,必須牢牢掌握它的使用方法和指向規(guī)律,才能夠更好地編寫JavaScript程序。