我想在JavaScript中创建enummeration。 所使用的JavaScript代码是
var FeatureName = {
"FEATURE1": 1,
"FEATURE2": 2,
"FEATURE3": 3,
"FEATURE4": 4,
"FEATURE5": 5
}
Object.freeze(FeatureName);
当方法Object.freeze(FeatureName),被称为它工作得很好,除了IE7和IE8所有的浏览器。 是否有任何替代品吗?
我想在JavaScript中创建enummeration。 所使用的JavaScript代码是
var FeatureName = {
"FEATURE1": 1,
"FEATURE2": 2,
"FEATURE3": 3,
"FEATURE4": 4,
"FEATURE5": 5
}
Object.freeze(FeatureName);
当方法Object.freeze(FeatureName),被称为它工作得很好,除了IE7和IE8所有的浏览器。 是否有任何替代品吗?
约翰Resig的提供了一个替代方案。 我没有你提到的浏览器试了一下。 试试吧,让我们知道。
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 );
};
您可以添加包括ES5-假 “猴子补丁”(仅需要包括es5-sham.min.js
)您的网页上,但要明白,这只会防止错误出现是非常重要的。
这不是一个真正的填充工具,虽然; 从项目的Github上自述:
Object.freeze
默默的失败对所有传统的发动机。 除非你是根据这种方法的安全性和安全性的规定,你不能在传统的发动机可能无法获得这应该是罚款。
该库也可以从cdnjs如果要使用CDN。
你可以用代码包括像这样(注意标签将其限制在IE 8版本及以上):
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/es5-shim/4.0.5/es5-sham.min.js" type="text/javascript"></script>
<![endif]-->