【js致死点】对象
2019-02-26 本文已影响0人
南方帅
- 对象的键名都是字符串,所以加不加引号都可以
如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。
// 邪门命名法
var obj = {
1: 'a',
3.2: 'b',
1e2: true,
1e-2: true,
.234: true,
0xFF: true
};
- 大括号默认是语句。要是对象的话请加
()
({ foo: 123 }) // 正确
({ console.log(123) }) // 报错
- 读取属性值
var foo = 'bar';
var obj = {
foo: 1,
bar: 2
};
obj.foo // 1
obj[foo] // 2
var obj = {
123: 'hello world'
};
obj.123 // 报错
obj[123] // "hello world"
- 删除属性
delete obj.key
删除属性只能是对性本身的, 删除继承的会报错
var obj = Object.defineProperty({}, 'p', {
value: 123,
configurable: false
});
obj.p // 123
delete obj.p // false
- 判断对象有什么键
in
vshasOwnProperty
in
是对象含有的,hasOwnProperty
是自身的
var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true
if ('toString' in obj) {
console.log(obj.hasOwnProperty('toString')) // false
}