1 . ES5给属性新增了可枚举性、可写性、可配置性?什么意思?
2. "定义不可变的类",那什么是可变的类?怎么定义不可变的类?
var obj = {}; Object.defineProperty(obj, 'test', { value: 'abc', enumerable: false, //不可枚举 writable: false, //不可写 configurable: false // 不可配置 }) //这里有详细说明:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty // value:属性的值 // writable:如果为false,属性的值就不能被重写。 // get: 一旦目标属性被访问就会调回此方法,并将此方法的运算结果返回用户。 // set:一旦目标属性被赋值,就会调回此方法。 // configurable:如果为false,则任何尝试删除目标属性或修改属性以下特性(writable, configurable, enumerable)的行为将被无效化。 // enumerable:是否能在for...in循环中遍历出来或在Object.keys中列举出来。 console.log(obj); //enumerable 为fale,所以in获取不到 for(var p in obj){ console.log(p); } delete obj.test; //无效,因为configurable=false obj.test='123';//无效,writable=-false
enumerable:老大
@Coca-code: ?
@幻天芒: configurable是总管老大,打错了。。
@Coca-code: hah,差不多~