(1)普通函数中的this指向:
this指向普通函数中的调用者;
<script type="text/javascript">
//普通函数;、
/*
调用普通函数时,this的指向是window;
本质:window.fn();调用的。
*/
function fn(){
console.log(this);
}
fn();
//定义一个全局变量其实就是给window添加属性
var name = "王五";
function obj(){
var name = "张三";
console.log(this);
console.log(this.name); //this 指向的是window 找window中的name;
}
obj();
//运行结果: window;王五;
var obj1 = {
name:"赵六",
sayName:function(){
console.log(this.name);//this指向obj1;
}
}
obj1.sayName(); //obj1调用sayName;所以this指向obj1;
//总结:this在普通函数中的指向;谁调用函数的执行,函数中this就会指向谁。
</script>
通过call和apply改变函数内部this的指向:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script type="text/javascript">
//call是function数据类型提供的一种方法,修改被调函数内部指针的指向。
var name = "王五";
var one = {
name:"张三"
};
var two = {
name:"李四"
};
function getName() {
console.log(this.name);
}
//普通函数调用this指向的是window;
getName();
//改变函数中的this指针的指向。
getName.call(one);
getName.apply(two);
//js中指针不能指向Null;
getName.call(null); //不能被修改。this指向window;
//call和 apply的作用和用法十一样的,只是子啊传递参数的时候,call把所需要的函数参数依次列举出来,而apply需要把函数的参数放在一个数组中。
</script>
</head>
<body>
</body>
</html>
网友评论