火箭语法中的javascript对象

火箭语法中的javascript对象,javascript,hashrocket,Javascript,Hashrocket,我想从JavaScript中的此哈希中获取一个值: hash= {:user_authenticated=>false, :user_email=>"nope"} hash.user_authenticated hash[user_authenticated] hash["user_authenticated"] hash[:user_authenticated] 似乎什么都不管用。我得到这个错误: 语法错误:无效的属性idJavascript对象不能像Ruby的哈希

我想从JavaScript中的此哈希中获取一个值:

hash=    {:user_authenticated=>false, :user_email=>"nope"}

hash.user_authenticated

hash[user_authenticated]

hash["user_authenticated"]

hash[:user_authenticated]
似乎什么都不管用。我得到这个错误:


语法错误:无效的属性id

Javascript对象不能像Ruby的哈希那样用火箭语法表示。随着ECMAScript 6的采用,Javascript实现已经获得了使用相同符号的能力,
=>
用于匿名函数定义的能力,尽管它们被称为箭头函数或通俗地称为胖箭头,而不是散列火箭

对于简单函数,使用箭头语法的定义和传统函数之间并没有区别

var foo = function (s) { return s.toString() }

相当于:

var foo = (s) => { return s.toString() }
var foo = (s) => s.toString()
此外,这两者都相当于:

var foo = (s) => { return s.toString() }
var foo = (s) => s.toString()
以及:

const foo = s => s.toString()
但是,当使用
时,传统函数和箭头函数之间的选择很重要,因为传统定义的函数为
创建了一个新的范围,而箭头函数则没有。由(根据许可证)提供的示例:

这里,
p.age
将始终为0,因为增加的
age
属于一个
this
,它只存在于内部函数中,而不是
Person
的实例,它是
p
。当内部函数定义为箭头函数时:

function Person() {
  // The Person() constructor defines `this` as an instance of itself.
  this.age = 0;

  setInterval(() => {
    // In non-strict mode, the growUp() function defines `this` 
    // as the global object, which is different from the `this`
    // defined by the Person() constructor.
    this.age++;
  }, 1000);
}

var p = new Person();
p.age
将等于自创建
p
以来的秒数,因为内部函数中的
this
是实例的
this


有关更多信息,请参阅看起来像Ruby而不是JavaScript的。

?JavaScript对象类似于{'key1':'value1','key2':'value2',…}