查看mozilla文档,查看正则表达式示例(标题为“使用匹配结果创建数组”),我们有如下语句:
输入:一个只读属性,它反映与正则表达式匹配的原始字符串。
index:只读属性,它是字符串中匹配项的从零开始的索引。
等等…是否可以在JavaScript中创建具有只读属性的对象,或者这是对特定浏览器实现的内置类型的特权?
编辑: 自从编写了此答案以来Object.defineProperty,EcmaScript 5中已经标准化了一种新的更好的使用方式,并在较新的浏览器中提供了支持。如果需要支持“较旧的”浏览器,则可以使用此答案中的一种方法作为备用。
Object.defineProperty
在Firefox,Opera 9.5+和Safari3+,Chrome和IE(已通过v11测试)中,您可以定义getter和setter属性。如果仅定义一个吸气剂,它将有效地创建一个只读属性。您可以使用对象文字或在对象上调用方法来定义它们。
var myObject = { get readOnlyProperty() { return 42; } }; alert(myObject.readOnlyProperty); // 42 myObject.readOnlyProperty = 5; // Assignment is allowed, but doesn't do anything alert(myObject.readOnlyProperty); // 42
如果已经有一个对象,则可以调用__defineGetter__和__defineSetter__:
__defineGetter__
__defineSetter__
var myObject = {}; myObject.__defineGetter__("readOnlyProperty", function() { return 42; });
当然,这在网络上并没有真正的用处,因为它在Internet Explorer中不起作用。