• js 的胖箭头问题


    我们在声明函数的时候通常是

    var foo function(a){

    console.log(a) 

    };

    用ES6 我们写成了这样

    var foo = a =>{

      console.log(a);

    };

    foo(2);

    只是少些了function字段哪些冗余的东西吗

    首先看下下面的代码:

    var obj={

      id:"LOVE"

      love:functionLove(){

      console.log(this.id);

      }

    };

    var id = "HIT"

    obj.love(); //LOVE

    setTimeout(obj.love,100); // LOVE

    都是LOVE ,没什么毛病吧,本应该是setTimeout(obj.love,100);输入HIT

    按照分析,love 函数丢失了同this 之间的绑定,应该是HIT this 应该是window 最常用的是var self = this;来处理下this:

    var obj = {
    id: "not LOVE",
    love: function() {
    var self = this
    console.log(this.id);
    }};
    var id = "not HIT"
    obj.love()
    setTimeout(obj.love(), 1000);

    哦 传说中的胖尖头this绑定时的行为和普通函数的行为完全不一致,难道是在es5 中解决了?没有 ,在严格模式下,这些都不是问题,但是在非严格模式下是会输出Hit的
  • 相关阅读:
    堆排序
    阿里云
    ubuntu下编译内核模块
    字节对齐
    线段树
    c++虚函数表解析
    电面
    sql server数据库定时自动备份
    [hiho1584]Bounce
    五彩斑斓的世界
  • 原文地址:https://www.cnblogs.com/Kellana/p/6591699.html
Copyright © 2020-2023  润新知