什么是this?
- 它是函數(shù)運行時,在函數(shù)體內(nèi)部自動生成的一個對象,只能在函數(shù)體內(nèi)部使用。
- JS中this的指向,取決于調(diào)用的模式(調(diào)用對象),JavaScript中有四種調(diào)用模式:
一、函數(shù)調(diào)用模式
- 函數(shù)的最通常用法,屬于全局性調(diào)用,因此this就代表全局對象。
<script type="text/javascript">
var x = 1;
function test() {
console.log(this.x);
}
test(); // 1
</script>
二、方法調(diào)用模式
- 函數(shù)還可以作為某個對象的方法調(diào)用,這時this就指這個上級對象。
<script type="text/javascript">
function test() {
console.log(this.x);
}
var obj = {};
obj.x = 1;
obj.m = test;
obj.m(); // 1
</script>
三、構(gòu)造器調(diào)用模式
- 所謂構(gòu)造函數(shù),就是通過這個函數(shù),可以生成一個新對象。這時,this就指這個新對象。
<script type="text/javascript">
function test() {
this.x = 1;
}
var obj = new test();
obj.x // 1
</script>
四、call()、apply()調(diào)用模式
- apply、call方法可以讓我們設(shè)定調(diào)用者中的this指向誰。
<script type="text/javascript">
function showValue(){
console.log(this.value);
}
var obj={
value:4
}
showValue.call(obj) //輸出4,this指向了obj對象
</script>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。