JS--this關鍵字
阿新 • • 發佈:2021-02-02
文章目錄
一、this呼叫區域性變數與全域性變數
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>this關鍵字</title>
<script type="text/javascript">
var name = "out";
var foo = {
name: "in",
getName: function() {
console.log(this.name);
return function() {
console.log(this.name);
}
}
}
foo.getName()();
</script>
</head>
<body>
</body>
</html>
輸出為什麼是in和out?
其實方法的呼叫foo.getName()();
可以看做是2步:
1 var f1 = foo.getName(); 2 var f2 = f1();
foo呼叫的是區域性變數,所以控制檯輸出in;而foo的返回值f1也是個方法,且此時f1是全部變數,所以f1輸出的name是全域性變數。
二、this當做引數
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>this關鍵字2</title>
<script type="text/javascript">
var name = "out";
function f1(bb){
alert(bb.name);
}
function f2(){
alert(this.name);
}
</script>
</head>
<body>
<button onclick="f1(this)" name="名字">按鈕1</button>
<button onclick="f2()">按鈕2</button>
</body>
</html>
按鈕1:
按鈕2:
在按鈕1的定義中,this被當做引數傳入,此時this代指的是當前所在標籤對應的DOM物件;
而在按鈕2中this代指的是呼叫f2方法的物件(這裡可以認為是全域性的最大的物件)