美文网首页深入解读JavaScript
续《判断this绑定的4个规则》之优先级

续《判断this绑定的4个规则》之优先级

作者: 悟C | 来源:发表于2018-07-07 13:44 被阅读0次

    《判断this绑定的4个规则》中我们介绍了:默认绑定、隐式绑定、显式绑定和new绑定,在面对它们的混合体的时候,我需要了解它们之间的优先级才能准确的知道,当前那条规则生效。

    默认绑定毫无疑问是四条规则中最低的级别,所以我们直接看隐式绑定显式绑定之间谁优先级高。

    function say() {
      console.log(this.name)
    }
    
    var cat_1 = {
      name: '小喵1',
      say: say
    }
    
    var cat_2 = {
      name: '小喵2',
      say: say
    }
    
    cat_1.say();            // 小喵1
    cat_1.say.call(cat_2)  //小喵2
    

    从上面的结果,我们看到显式绑定比隐式绑定优先级要高。

    下面我们来看下显示绑定new绑定

    function resetName(name) {
      this.name = name;
    }
    
    var cat_1 = {}
    
    var cat = resetName.bind(cat_1);
    cat('小喵1');
    console.log(cat_1.name); //小喵1
    
    var newCat = new cat('小喵2');
    // 发现并没有改变
    console.log(cat_1.name)   //小喵1
    // 但是
    console.log(newCat.name) //小喵2 
    

    这样看起来显式绑定似乎比new绑定优先级更高,无法使用new来控制this绑定。但我们发现new cat('小喵2'),是指向newCat这个新对象,这也符合new操作符的作用。

    总结

    结合判断this绑定的4个规则和了解它们之间的优先级,我们能更安全的使用this。


    参考文献

    《你不知道的javaScript》上卷

    相关文章

      网友评论

        本文标题:续《判断this绑定的4个规则》之优先级

        本文链接:https://www.haomeiwen.com/subject/lxqwuftx.html