小编boo*_*box的帖子

为什么JavaScript中的对象不可访问?

为什么默认情况下对象不可迭代?

我一直看到与迭代对象有关的问题,常见的解决方案是迭代对象的属性并以这种方式访问​​对象中的值.这似乎很常见,它让我想知道为什么对象本身不可迭代.

for...of默认情况下,像ES6 这样的语句很适合用于对象.因为这些功能仅适用于不包含{}对象的特殊"可迭代对象" ,所以我们必须通过箍来使这个对我们想要使用它的对象起作用.

for ... of语句创建一个循环迭代可迭代对象 (包括Array,Map,Set,arguments对象等)......

例如,使用ES6 生成器功能:

var example = {a: {e: 'one', f: 'two'}, b: {g: 'three'}, c: {h: 'four', i: 'five'}};

function* entries(obj) {
   for (let key of Object.keys(obj)) {
     yield [key, obj[key]];
   }
}

for (let [key, value] of entries(example)) {
  console.log(key);
  console.log(value);
  for (let [key, value] of entries(value)) {
    console.log(key);
    console.log(value);
  }
}
Run Code Online (Sandbox Code Playgroud)

当我在Firefox(支持ES6)中运行代码时,上面按照我期望的顺序正确记录数据:

hacky的输出

默认情况下,{}对象不可迭代,但为什么?缺点是否超过了可迭代对象的潜在好处?与此相关的问题是什么?

此外,由于{}对象是从"阵列状"集合和"可迭代的对象",如不同NodeList,HtmlCollection以及arguments …

javascript arrays iterator ecmascript-5 ecmascript-6

72
推荐指数
4
解决办法
5万
查看次数

如何在 javascript cookie 中存储访问令牌值并使用 AJAX 调用将该令牌传递给 Header

我有一个登录表单,如下所示:

<form method="post" name="logForm" onsubmit="onLogin()" action="dashbooard.html">
    <label>Email</label>
    <input type="text" name="email">
    <label>Password</label>
    <input type="password" name="pass">
    <input type="submit" name="submit" value="Login" >
</form>
Run Code Online (Sandbox Code Playgroud)

现在,当我单击“登录”按钮时,服务器access_token对我进行了身份验证,生成并通过 REST API 返回给我。

我想将其存储access_token在 cookie 中并将该令牌传递给请求。但是,我不知道该怎么做。我很想得到这方面的帮助。

javascript jquery

5
推荐指数
2
解决办法
2万
查看次数