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

javascript中的this屬性

馮子軒1年前7瀏覽0評論

隨著前端技術的不斷發展,JavaScript(以下簡稱JS)已經成為了不可或缺的一部分。在JS中,this是一個非常重要的概念。對于剛接觸JS的人來說,可能會產生一些疑惑,比如this到底是什么?this有什么用?

簡單來說,this是一個指針,指向當前執行代碼的上下文對象。所謂上下文對象,可以理解為當前代碼所處的作用域。具體來說,this的指向由函數的調用方式決定。下面舉幾個例子來說明:

// 例一
var name = 'Lucy';
function showName() {
console.log(this.name);
}
showName(); // undefined
// 例二
var name = 'Lucy';
function showName() {
console.log(this.name);
}
var obj = {
name: 'Tom',
showName: showName
}
obj.showName(); // Tom
// 例三
var name = 'Lucy';
function showName() {
console.log(this.name);
}
var obj = {
name: 'Tom',
showName: function() {
console.log(this.name);
}
}
obj.showName(); // Tom

從上面的例子可以看出,this的指向是根據函數調用的方式來決定的。如果是全局作用域下的函數調用,this指向的是全局對象;如果是作為一個對象的方法調用,this指向的是這個對象本身;如果是使用new關鍵字調用構造函數,this指向的是新創建的對象。

另外,有一種比較特殊的JS對象——箭頭函數,箭頭函數的this指向的是定義時所在的作用域,而不是調用時的作用域。

// 例四
var name = 'Lucy';
function showName() {
console.log(this.name);
}
var obj = {
name: 'Tom',
showName: () => {
console.log(this.name);
}
}
obj.showName(); // Lucy

需要注意的是,this的指向可以被修改。比如使用apply、call和bind這三個方法,可以改變函數執行時的this上下文。下面來看一些例子:

// 例五
var name = 'Lucy';
function showName() {
console.log(this.name);
}
var obj1 = {
name: 'Tom'
}
var obj2 = {
name: 'Jerry'
}
showName.apply(obj1); // Tom
showName.call(obj2); // Jerry
var newFunc = showName.bind(obj1);
newFunc(); // Tom

除此之外,還有一種比較特殊的情況,this的值可能是undefined。比如在嚴格模式('use strict')下,全局作用域下的函數調用時,this的值是undefined。

// 例六
'use strict';
function showName() {
console.log(this);
}
showName(); // undefined

總之,this是JS中非常重要的一個概念,理解this的指向原理,可以幫助我們更好地掌握JS的語法和編程思想。