1. 程式人生 > 其它 >JS--this關鍵字

JS--this關鍵字

技術標籤:JSjs

文章目錄

一、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方法的物件(這裡可以認為是全域性的最大的物件)