1. 程式人生 > >call和apply的this指向問題

call和apply的this指向問題

call( )方法和apply( )方法用法:

    .call( this指向,引數 )

    .apply( this指向,引數陣列 )

注意:

    這裡的this指向必須是引用型別。

    如果this被強行改變為值型別,那麼能夠轉為對應包裝型別的都會轉,不能轉的 指向window

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script type="text/javascript">
		// 定義函式
		var fun = function() {
			console.log(this);
		}


		// 強行使用call或者apply 將fun中的this指向值型別
		var arr = [1, "1", false, null, undefined];

		for(var i = 0; i < arr.length; i++) {
			// fun.call(arr[i]);
			fun.apply(arr[i]);
		}
		// this必須是引用型別 如果this被強行改變為值型別那麼能夠轉為對應包裝型別的都會轉
		// 如果不能轉的 指向window
	</script>
</body>
</html>

輸出結果:


this指向數字值型別 相當於指向new Number( 數字值 )

this指向字串值型別 相當於指向new String( 字串值 ) 

this指向布林值型別 相當於指向new Boolean( 布林值 ) 

this指向null 或者 undefined 相當於指向window物件