我尝试在MDN上查找这方面的资源,但我遇到的唯一一个是this,并且没有提到任何这样的函数存在。
我没有在Chromium中看到这个Symbol函数,但我在Chrome (不稳定,v35)中看到了它。考虑到Firefox或Chromium中没有这种技术,这只是一些实验性的技术吗?

发布于 2014-06-20 01:52:09
它是一种在对象上定义“私有”成员的机制。这对于在不使用闭包、WeakMaps或其他技术隐藏对象的私有数据的情况下正确封装ECMAScript对象非常有用。
当前的规范可以在这里找到:ES6 Draft - Symbol
以下是一些使用示例以及其他技术:Private properties in JavaScript
下面是一个例子:
var Person = (function () {
var name_ = new Symbol();
function Person(name) {
this[name_] = name;
}
Person.prototype = Object.create(Object.prototype, {
name: { get: function () { return this[name_]; } }
}
})();在上面的示例中,不能在闭包外部访问name_符号,并且不会向任何ES5方法可以反映的对象添加任何键。外部代码必须能够访问name_符号,才能在从Person构造函数构造的实例上访问与其关联的值。
https://stackoverflow.com/questions/22420937
复制相似问题