【发布时间】:2012-10-02 16:57:27
【问题描述】:
我正在 ES5 中编写 ES Harmony Symbol/Name 的实现。我将使用名称Symbol,但我希望浏览器使用任何预先存在的Symbol,以防它已经存在(在未来的浏览器中)。我希望我的代码严格符合 ES5 标准并且可移植到其他项目。
这是在非严格的 ES3/ES5 中做我想做的事情的一种方法:
(function() {
// If Symbol already exists, we're done.
if(typeof Symbol != 'undefined') return;
// This becomes global because it wasn't declared with var
Symbol = function() {
// ...
};
})();
但是,它不符合 ES5 严格标准,因为 Symbol 没有明确定义。
实现此目的的其他方法包括访问 window 对象 (window.Symbol = ...),但这也不好,因为我不希望我的代码假定它在浏览器环境中运行。
在 ES5 strict 中如何做到这一点?
【问题讨论】: