(1)普通函數(shù)中的this指向:
this指向普通函數(shù)中的調(diào)用者兼耀;
<script type="text/javascript">
//普通函數(shù);嫉你、
/*
調(diào)用普通函數(shù)時,this的指向是window块饺;
本質(zhì):window.fn();調(diào)用的饵逐。
*/
function fn(){
console.log(this);
}
fn();
//定義一個全局變量其實(shí)就是給window添加屬性
var name = "王五";
function obj(){
var name = "張三";
console.log(this);
console.log(this.name); //this 指向的是window 找window中的name;
}
obj();
//運(yùn)行結(jié)果: window;王五;
var obj1 = {
name:"趙六",
sayName:function(){
console.log(this.name);//this指向obj1;
}
}
obj1.sayName(); //obj1調(diào)用sayName袁串;所以this指向obj1;
//總結(jié):this在普通函數(shù)中的指向概而;誰調(diào)用函數(shù)的執(zhí)行,函數(shù)中this就會指向誰囱修。
</script>
通過call和apply改變函數(shù)內(nèi)部this的指向:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script type="text/javascript">
//call是function數(shù)據(jù)類型提供的一種方法赎瑰,修改被調(diào)函數(shù)內(nèi)部指針的指向。
var name = "王五";
var one = {
name:"張三"
};
var two = {
name:"李四"
};
function getName() {
console.log(this.name);
}
//普通函數(shù)調(diào)用this指向的是window;
getName();
//改變函數(shù)中的this指針的指向破镰。
getName.call(one);
getName.apply(two);
//js中指針不能指向Null;
getName.call(null); //不能被修改餐曼。this指向window;
//call和 apply的作用和用法十一樣的,只是子啊傳遞參數(shù)的時候鲜漩,call把所需要的函數(shù)參數(shù)依次列舉出來源譬,而apply需要把函數(shù)的參數(shù)放在一個數(shù)組中。
</script>
</head>
<body>
</body>
</html>