I'm writing an implementation of ES Harmony Symbol/Name in ES5. I'm going to use the name Symbol, but I want the browser to use any pre-existing Symbol it has in the case that it already exists (in future browsers). I want my code to be ES5 strict compliant and portable to other projects.
Here's one way (of many) to do what I want to in ES3/ES5 non-strict:
(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() {
        // ...
    };
})();
However, it's not ES5 strict compliant because Symbol is not defined explicitly.
Other ways to accomplish this would involve accessing the window object (window.Symbol = ...), but this is no good either because I don't want my code to assume its running in a browser environment.
How can this be done in ES5 strict?
 
     
     
     
    