zoukankan      html  css  js  c++  java
  • 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的
  • 相关阅读:
    HTML DOM 06 节点关系
    HTML DOM 05 事件(三)
    HTML DOM 05 事件(二)
    HTML DOM 05 事件(一)
    html DOM 04 样式
    html DOM 03 节点的属性
    html DOM 02 获取节点
    html DOM 01 节点概念
    JavaScript 29 计时器
    JavaScript 28 弹出框
  • 原文地址:https://www.cnblogs.com/Kellana/p/6591699.html
Copyright © 2011-2022 走看看