使用Javascript - 字符串转换为恒

问题描述:

如何将字符串转换为常量的Javascript使用Javascript - 字符串转换为恒

海峡= “用户” //使用Javascript魔法 用户

你不 - JavaScript没有常量,也没有只读变量。 (JavaScript的一些扩展提供只读访问器,但这完全是另一回事。)

+0

其实我想这样做=>`str =“key:value”arr = str.split(':')obj = {arr [0]:arr [1]}`我该怎么做? – Srushti 2011-01-11 07:03:03

据我所知,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> 

希望这会帮助你。