首页 新闻 搜索 专区 学院

JavaScript代码的小小疑问(52)

0
[已解决问题] 解决于 2015-11-13 22:38

 1 . ES5给属性新增了可枚举性、可写性、可配置性?什么意思?

 

   2.  "定义不可变的类",那什么是可变的类?怎么定义不可变的类?

Coca-code的主页 Coca-code | 初学一级 | 园豆:6
提问于:2015-10-19 21:08
< >
分享
最佳答案
0
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
奖励园豆:5
幻天芒 | 高人七级 |园豆:36781 | 2015-11-12 12:09

enumerable:老大

Coca-code | 园豆:6 (初学一级) | 2015-11-13 22:38

@Coca-code: ?

幻天芒 | 园豆:36781 (高人七级) | 2015-11-14 09:08

@幻天芒: configurable是总管老大,打错了。。

Coca-code | 园豆:6 (初学一级) | 2015-11-14 15:44

@Coca-code: hah,差不多~

幻天芒 | 园豆:36781 (高人七级) | 2015-11-14 17:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册