1.this
this的運用場景:
- 1.作為組織函數實行;
- 2.作為對象屬性實行;
- 3.作為一般函數實行;
- 4.call apply bind。
this要在實行時才確認值,定義時沒法確認
var a = {
name:"A",
fn:function(){
console.log(this.name);
}
}
a.fn();//this===a
a.fn.call({name:"B"});//this==={name:"B"}
var fn1 = a.fn;
fn1();//this===window
2.call,apply
轉變上下文this指向。
- fn.call({this指向},參數1,參數2)
- fn.apply({this指向},[參數1,參數2])
//call
function fn2(name,age){
alert(name);//zhangsan
console.log(this);//{x: 100}
}
fn2.call({x:100},'zhangsan',20);
//apply
function fn3(name,age){
alert(name);//lisi
console.log(this);//{y: 200}
}
fn3.apply({y:200},['lisi',30]);
3.bind
在函數表達式後邊轉變函數的上下文。
- var fn = function(參數){}.bind({this指向});
- fn(參數)
var fn4 = function(name,age){
alert(name);//wangwu
console.log(this);//{z: 300}
}.bind({z:300});
fn4('wangwu',40);