Javascript:对象不支持方法' freeze'

Javascript:对象不支持方法' freeze'

问题描述:

我正在尝试使用Javascript创建枚举. 使用的javascript代码是

I am trying to create an enummeration in Javascript. The javascript code used is

var FeatureName = {
"FEATURE1": 1,
"FEATURE2": 2,
"FEATURE3": 3,
"FEATURE4": 4,
"FEATURE5": 5
}
Object.freeze(FeatureName);

调用方法 Object.freeze(FeatureName)时,该方法对于除IE7和IE8以外的所有浏览器都适用.除此之外,还有其他选择吗?

When the method Object.freeze(FeatureName), is called it works fine for all the browsers except IE7 and IE8. Is there any alternative to this?

John Resig提供了一种替代方法.我没有在您提到的浏览器中尝试过.试试看,让我们知道.

John Resig provides an alternative. I haven't tried it in the browsers you mention. Try it and let us know.

http://ejohn.org/blog/ecmascript-5-objects -and-properties/

Object.freeze = function( obj ) {
  var props = Object.getOwnPropertyNames( obj );

  for ( var i = 0; i < props.length; i++ ) {
    var desc = Object.getOwnPropertyDescriptor( obj, props[i] );

    if ( "value" in desc ) {
      desc.writable = false;
    }

     desc.configurable = false;
     Object.defineProperty( obj, props[i], desc );
  }

  return Object.preventExtensions( obj );
};