代码之家  ›  专栏  ›  技术社区  ›  chen

为什么可以用json定义函数?

  •  -2
  • chen  · 技术社区  · 6 年前

    我在看一个反应医生, https://reacttraining.com/react-router/web/example/auth-workflow ,并尝试理解以下代码:

    看起来函数定义发生在json对象中,但我的理解是,在json中不能有函数

    const fakeAuth = {
      isAuthenticated: false,
      authenticate(cb) {
        this.isAuthenticated = true;
        setTimeout(cb, 100); // fake async
      },
      signout(cb) {
        this.isAuthenticated = false;
        setTimeout(cb, 100);
      }
    };
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Barmar    6 年前

    正如评论中提到的,这不是JSON,它是JavaScript对象文字。它对函数属性使用ES6速记语法。

    authenticate(cb) {
      this.isAuthenticated = true;
      setTimeout(cb, 100); // fake async
    },
    

    简称:

    authenticate: function(cb) {
      this.isAuthenticated = true;
      setTimeout(cb, 100); // fake async
    },
    
        2
  •  1
  •   StackSlave    6 年前

    在真正的json中,不能有 function ,而且没有 var 这是一种用来保存数据的格式 (基于javascript) . 在javascript中,可以有一个作为对象属性的函数。

        3
  •  1
  •   jmesolomon    6 年前

    如果你指的是整个 const fakeAuth = {...} 代码,这不是一个json对象。而是创造一个 fakeAuth 对象具有属性( isAuthenticated 和具有参数的函数( authenticate , signout )