深入理解JavaScript对象属性

创建JavaScript的对象,可以通过对象.属性名获取值,也可以通过对象['key']获取内容。

使用对象['key']

,传入的内容都会被转换为字符串值。

var obj = { a: 'test', b: 'test2' }; obj.a; //test obj['b'];//test2

属性读写

var obj = {
  a: 'test',
  b: 'test2'
};
obj.a; //test 
obj['b'];//test2

属性异常

如果读取没有的属性,通常会返回undefined,如果二维值的话,会报错。

console.log(obj.z);//undefined
console.log(obj.z.b);//Uncaught TypeError: Cannot read property 'b' of undefined
obj.y.z = 2; // TypeError: Cannot set property 'z' of undefined
//可以通过判断是否存在
if (obj.y) {
   //存在的话则执行
}

属性枚举

var key;
for (key in obj) {
  console.log(obj[key]);
}

属性删除

使用delete关键字

delete obj.a;//true
obj.a; // undefined

如果这个属性设置过configurable为true,则不能删除。

默认创建的属性,configurable为false。下面讲如何设置为true。

不能删除全局变量

var globalVal = 1;
delete globalVal; // false

不能删除函数

function fd() {}
delete fd; // false

可以删除Window上的变量

ohNo = 1;
window.ohNo; // 1
delete ohNo; // true

属性检测

判断是否存在这个属性

var obj = {
  a: 'test',
  b: 'test2'
};

'a' in obj;//true
'toString' in obj //true

在原型链上的值也可以被检测到。

例如所有对象上都有toString属性.

每个属性都有一个属性:enumerable,是否可以被检测,默认为true,如果为false,则检测不到这个属性,不能遍历。

    var obj = {
      a: 'test',
      b: 'test2'
    };

    Object.defineProperty(obj, 'price', {
      enumerable: false,
      value: 1000
    });
    var key;
    for (key in obj) {
      console.log(obj[key])
    }
//只输出test和test2

判断这个属性可否被枚举,true 可以,false不能

obj.propertyIsEnumerable('price');

设置属性的属性

上一篇 NodeJS强大的解压ZIP 库
下一篇 关于CorePress主题出现code on line 88错误解决方法
目录
applek

applek管理员

个人说明在个人中心里面设置

本月创作热力图

最新评论
Mr.C
Mr.C
4月12日
个人建议,下个版本考虑将下载地址加密(防止采集)
Felix
Felix
4月1日
你好我想请教一下,为什么我php和redis都安装了,还是连接不上,一直显示未安装,旧插件文件也清理了
Mike
Mike
4月1日
当前页跳转一个页面,然后回退上一页,顶部进度条会缓慢加载,并且加载不完
评论于留言建议
Mike
Mike
4月1日
文章页划到最底部,侧边栏中切换作者发言会溢出
评论于留言建议
陇安辞
陇安辞
3月31日
guzhang
评论于关于本站