函数上下文
一、函数执行时,函数的上下文是window.
var a = 200;
function func(){
var a = 100;
console.log(this.a) // window.a
}
func()
二、函数作为对象的方法,对象调用方法时,函数的上下文即为这个对象
function say() {
console.log(this.name) // obj.name
}
var obj = {
name:'Jane Doe',
sayHi:say
}
obj.sayHi()
三、函数作为时间处理函数,函数的上下文就是这个事件触发的对象
function changeColor(){
this.style.background = 'pink';
}
var box = document.getElementById('box1');
box.onclick = changeColor;
四、计时器,函数的上下文是window
<div id = 'box'> </div>
var box = document.getElementById('box');
box.onclick = function () {
var self = this;
setInterval(function () {
self.style.background = 'pink'
},1000)
}
五、函数作为数组的元素,被索引出来执行时,函数的上下文属于该数组。
function func(){
console.log(this === array) // true
}
var array = [func,1,2,3,4]
array[0]()
apply, call
function sum(a,b,c,d) {
console.log(a+b+c+d);
console.log(this === Car)
}
var Car = {
name:'Benz'
};
//sum.call(Car,1,2,3,4)
sum.apply(Car,[1,2,3,4]) // 后面参数必须是数组