ECMAScript 262v5带来的新东西,FF把它归入为javaScript 1.8.5的功能之一。
语法:
Object.defineProperty(obj, prop, descriptor)
参数:
obj:目标对象
prop:需要定义的属性或方法的名字。
descriptor:目标属性所拥有的特性。
可供定义的特性列表:
- value:属性的值
- writable:如果为false,属性的值就不能被重写。
- get: 一旦目标属性被访问就会调回此方法,并将此方法的运算结果返回用户。
- set:一旦目标属性被赋值,就会调回此方法。
- configurable:如果为false,则任何尝试删除目标属性或修改属性以下特性(writable, configurable, enumerable)的行为将被无效化。
- enumerable:是否能在for...in循环中遍历出来或在Object.keys中列举出来。
- function Person() {
- var age = new Date().getFullYear() - 18;
- Object.defineProperty(this, "age", {
- get: function () { alert("内部存储数据为:" + age); return new Date().getFullYear() - age; },
- set: function (value) { age = value; }
- });
- }
- var p = new Person();
- p.age = 1994;
- alert("外部获取到的数据为:" + p.age);