当前位置:  开发笔记 > 编程语言 > 正文

bind和var self之间的区别=这个?

如何解决《bind和varself之间的区别=这个?》经验,为你挑选了1个好方法。

在我的反应本机代码中,我在模块中使用bind(this)var self = this;在多个位置.

两者都解决了this在正确的地方解析关键字的问题.

这是我的代码(2个代码执行相同的功能) -

    运用 bind(this)

    retval.then(function (argument) {
        console.log("argument"+JSON.stringify(argument));
        this.stateSetting(argument);
    }.bind(this));
    

    运用 var self = this

    var self = this;
    retval.then(function (argument) {
       console.log("argument"+JSON.stringify(argument));
       self.stateSetting(argument);
    });
    

考虑到他们都做同样的工作,我很想知道什么是正确的方法呢?使用其中一个是否有问题?或者有更好的方法吗?



1> lleaff..:

鉴于您的目标是实现ES2015的Node.js,您最好使用箭头功能.箭头函数具有所谓的词法 this,这意味着this箭头函数中的变量被视为普通变量,并且在创建函数时将被关闭.

所以你的代码变成:

retval.then((argument) => {
    console.log("argument"+JSON.stringify(argument));
    // "this" will inherit the value of the outside scope
    this.stateSetting(argument); 
});

如果定位ES5(旧浏览器),那么我更喜欢这种.bind风格而不是var self = this.它更结构化,更接近功能方法,这使得代码更容易推理,就像你必须通过使用promises发现的那样.它似乎也稍微高效一点.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有