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

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

本月创作热力图

最新评论
西风
西风
3月7日
暂时不需要也能跑
Kevin
Kevin
3月6日
请教,小网站,1000ip不到,小主机,2c4g,到底 redis 还是 macached 合适啊
hfloke
hfloke
3月1日
新版本安装更新后,页面有问题哦
丙氨酸
丙氨酸
2月27日
测试
评论于关于本站
RiseForever
RiseForever
2月23日
听说新主题发布了,来测试下评论区。