3

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);

stefanieliang
190 声望19 粉丝

一天一笔记~