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);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。