我试着检查 MDN 上的资源,但我遇到的唯一一个是 this ,并且没有提到任何现有的此类功能。
我在 Chromium 中看不到这个 Symbol
函数,但我在 Chrome 中看到了它(不稳定,v35)。考虑到 Firefox 或 Chromium 中没有,这只是一些实验性技术吗?
最佳答案
这是一种在对象上定义“私有(private)”成员的机制。这对于正确封装 ECMAScript 对象非常有用,无需使用闭包、WeakMaps 或其他技术来隐藏对象的私有(private)数据。
可在此处找到当前规范: 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 方法反射(reflect)的键。 name_
符号必须可供外部代码访问,以便在从 Person
构造函数构造的实例上访问与其关联的值。
关于javascript - Chrome 中的 Symbol 功能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22420937/