函數(shù)上下文
一、函數(shù)執(zhí)行時(shí)死嗦,函數(shù)的上下文是window.
var a = 200;
function func(){
var a = 100;
console.log(this.a) // window.a
}
func()
二、函數(shù)作為對象的方法粒氧,對象調(diào)用方法時(shí)越除,函數(shù)的上下文即為這個對象
function say() {
console.log(this.name) // obj.name
}
var obj = {
name:'Jane Doe',
sayHi:say
}
obj.sayHi()
三、函數(shù)作為時(shí)間處理函數(shù)靠欢,函數(shù)的上下文就是這個事件觸發(fā)的對象
function changeColor(){
this.style.background = 'pink';
}
var box = document.getElementById('box1');
box.onclick = changeColor;
四廊敌、計(jì)時(shí)器,函數(shù)的上下文是window
<div id = 'box'> </div>
var box = document.getElementById('box');
box.onclick = function () {
var self = this;
setInterval(function () {
self.style.background = 'pink'
},1000)
}
五门怪、函數(shù)作為數(shù)組的元素骡澈,被索引出來執(zhí)行時(shí),函數(shù)的上下文屬于該數(shù)組掷空。
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]) // 后面參數(shù)必須是數(shù)組