javascript改变this指向方法详解

改变this指向有三种方法:call apply bind

call和apply的区别是apply是以数组形式改变,bind是和call类似,只不过是在后面加();

var m = 3000;
    var obj = {
        name:'王五',
        m:this.m, 
        state:function(a,b){
            console.log(`${this.name}的长度是${this.m}而${a}的宽度是${b}`)//而a的宽度undefined
        }
    }
    //  obj.state.fn();
        var skarr={
        name:'老刘',
        m:40,
    }

    obj.state()
     obj.state.call(skarr,'张三',123)//此时this的指向为老刘的长度是40而张三的宽度是123
  

如果是换成apply的话,那这个call换成apply时张三,123就必须以数组的形式展现出来;
eg:

obj.state.apply(skarr,[张三,123]);//此时结果和call一样;

   obj.state.bind(skarr,'张三',123)();

三种结果都一样,只不过区别不同而已;

大家看完之后可以尝试一下啊

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容