相关疑难解决方法(0)

将符号引入ES6的动机是什么?

更新:最近一篇来自Mozilla精彩文章出现了.如果你好奇,请阅读它.

您可能知道他们计划在ECMAScript 6中包含新的Symbol原语类型(更不用说其他一些疯狂的东西).我一直认为:symbolRuby 中的概念是不必要的; 我们可以轻松地使用纯字符串,就像我们在JavaScript中一样.现在他们决定用JS复杂化JS.

我不明白动机.有人可以向我解释我们是否真的需要JavaScript中的符号吗?

javascript symbols ecmascript-harmony ecmascript-6

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

新的JavaScript"Symbol"数据类型有哪些可能的使用方案?

我只是偶然在JavaScript中,新的(建议ES6,但在Firefox,Chrome和歌剧已经实施)数据类型的文档时Symbol:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects

我正在读它,但我想不出可能的使用场景.

文件说:

符号是唯一且不可变的数据类型,可用作对象属性的标识符.

好的,好吧,假设我按照文档说的那样做:

obj[Symbol("a")] = "a";
Run Code Online (Sandbox Code Playgroud)

但是,因为符号('a')总是返回唯一值(对象),并且:

迭代中的符号在...中不可见.

我如何从中检索我的财产obj

var obj = { normalProperty: 'just a string' };
obj[Symbol('a')] = 'a';

document.getElementById('retrieve').addEventListener('click', function() {
  document.write('Stringified object:' + JSON.stringify(obj) + '<br/><br/>');
  document.write('Trying to get Symbol-property value, aaaand...: <br/>');
  document.write(obj[Symbol('a')]); // undefined
}, false);
Run Code Online (Sandbox Code Playgroud)
<button id="retrieve">Retrieve obj's property</button>
Run Code Online (Sandbox Code Playgroud)

编辑

当然,您可以像这样检索它:

var x = Symbol('a');
obj[x] = 'a';
obj[x]; // "a"
Run Code Online (Sandbox Code Playgroud)

但这样做的目的是什么?

提前致谢 :)

javascript types symbols

16
推荐指数
2
解决办法
1188
查看次数

ECMA-262-v6中"符号"类型的含义是什么?

ECMA-262-v6中"符号"类型的含义是什么?对象键的快速路径实现?它在引擎盖下做了什么 - 哈希它保证底层数据是不可变的?

javascript symbols ecmascript-6

6
推荐指数
1
解决办法
587
查看次数