私はES Harmony Symbol/ Namein 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でどのように行うことができますか?