解析器在調用函數每次都會向函數內部傳遞進一個隱含的參數,
這個隱含的參數就是this,this指向的是一個對象,
這個對象我們稱爲函數執行的 上下文對象,
根據函數的調用方式的不同,this會指向不同的對象
1.以函數的形式調用時,this永遠都是window
2.以方法的形式調用時,this就是調用方法的那個對象
function fun(){
//console.log("a = "+a+", b = "+b);
console.log(this.name);
}
//fun();
//創建一個對象
var obj = {
name:"孫悟空",
sayName:fun
};
var obj2 = {
name:"沙和尚",
sayName:fun
};
//console.log(obj.sayName == fun);
var name = "全局的name屬性";
//obj.sayName();
//以函數形式調用,this是window
//fun();
//以方法的形式調用,this是調用方法的對象
//obj.sayName();
obj2.sayName();
源碼練習
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
//創建一個name變量
var name = "全局";
//創建一個fun()函數
function fun(){
console.log(this.name);
}
//創建兩個對象
var obj = {
name:"孫悟空",
sayName:fun
};
var obj2 = {
name:"沙和尚",
sayName:fun
};
//我們希望調用obj.sayName()時可以輸出obj的名字
//obj.sayName();
obj.sayName();
</script>
</head>
<body>
</body>
</html>