深入理解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管理员

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

本月创作热力图

最新评论
chinacnd
chinacnd
6月26日
这个主题是怎么做到加载速度那么快的?
风起云涌
风起云涌
6月17日
前台投稿现在有点太抽象了 希望可以弄成那种分区填写的 标题,内容,图片,目录,标签,这样的
评论于留言建议
风起云涌
风起云涌
6月17日
希望加个开关去掉页脚的站点身份,还有自定义页脚居中文字
评论于留言建议
卡卡
卡卡
5月31日
倒是放个演示地址啊