私はES Harmony Symbol
/ Name
in ES5の実装を書いています。という名前を使用しますが、ブラウザーが既に存在する場合に備えて、Symbol
既存のものを使用するようにします (将来のブラウザーで)。Symbol
コードを ES5 に厳密に準拠させ、他のプロジェクトに移植できるようにしたいと考えています。
ES3 / ES5非厳密でやりたいことを行う(多くの)方法の1つを次に示します。
(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() {
// ...
};
})();
ただし、Symbol
明示的に定義されていないため、ES5 の厳密な準拠ではありません。
window
これを実現するには、オブジェクト ( ) にアクセスする必要がありますwindow.Symbol = ...
が、コードがブラウザー環境で実行されることを想定したくないため、これも役に立ちません。
これは厳密なES5でどのように行うことができますか?