【js基本】之this,call,apply,bind

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
    原文地址: https://segmentfault.com/a/1190000014633798
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞