this 每一个函数内部都有的一个内置变量。
this 永远指向当前函数主人。
1、以下函数的主人是window
function show(){
alert(this); }
2、事件绑定中,this一般情况下指向当前函数的绑定的元素节点
window.onload = function(){
var oBtn = document.getElementById("btn1");
oBtn.onclick = show;
function show(){
alert(this);
}
}
3、对象中的方法 this指向当前这个对象
var obj = {
name: "小明",
sex: '男',
age: 18,
showName: function(){
alert(obj.name);
alert(this.name)
}
}
obj.showName();
改变this指向
函数对象下,强制改变this指向的三个方法。
call
函数.call()
第一个参数位置,必定传入的是,this的指向
从第二个参数开始,是原有的参数,原有参数往后顺延一位
show.call(“call”, 40, 50); //40的下标原来是0,使用call后下标变成了1
apply
函数.apply()
第一个参数位置,必定传入的是,this的指向
将原有的参数直接放在数组中,传入。
show.apply(“apply”, [30, 40]);
bind
函数.bind(this的指向);
功能:预设this的指向
返回值:还是原函数(函数中的this被预设了)
只有使用了上述三个方法后,才会改变,如果之后调用函数不使用该方法,则this的指向还是原来的主人。
【注】声明变量要使用var声明,通过var声明的变量有作用域,作用域范围是一个函数的大括号。