2011-01-11 49 views

回答

2

你不 - JavaScript沒有常量,也沒有隻讀變量。 (JavaScript的一些擴展提供只讀訪問器,但這完全是另一回事。)

+0

其實我想這樣做=>`str =「key:value」arr = str.split(':')obj = {arr [0]:arr [1]}`我該怎麼做? – Srushti 2011-01-11 07:03:03

0

據我所知,Javascript中不存在常量。但是你可以創建一個對象,將公開此信息爲只讀屬性:

<script type="text/javascript"> 
    function defineConstant(obj, name, value) { 
     // Non-standard! 
     if(obj.__defineGetter__) { 
      obj.__defineGetter__(name, function() { return value; }); 
      obj.__defineSetter__(name, function() { throw "Read-only property"; }); 
     } else { 
      if(typeof(Object.defineProperty) != 'undefined') { 
       try { 
       // First, trying the "normal" way 
       defineReadOnlyProperty(obj, name, value); 
       } catch(ex) { 
        var temp = obj; 

        // Ugly hack to make "defineProperty" work in IE 
        // (only works on DOM elements prior IE9) 
        obj = document.createElement('DIV'); 

        // Copying object members 
        for(var key in temp) 
         obj[key] = temp[key]; 

        // Now it should define property 
        defineReadOnlyProperty(obj, name, value); 
       } 
      } 
     } 

     return obj; 
    } 

    function defineReadOnlyProperty(obj, name, value) { 
     Object.defineProperty(obj, name, { 
      get: function() { return value; }, 
      set: function() { throw "Read-only property"; } 
     }); 
    } 
</script> 

而上述功能的使用將是這樣的:

<script type="text/javascript">  
    var Global = {}; 

    Global = defineConstant(Global, 'MagicUser', 'User');   

    // Getting "User" 
    alert(Global.MagicUser); 

    // Throws an error 
    Global.MagicUser = 'User2'; 
</script> 

希望這會幫助你。