文章目录
  1. 1. js定对象的属性,有2中方法
  2. 2. 使用字面量定义对象的属性
    1. 2.1. es6允许表达式这样干了.
  3. 3. 表达式还可以定义方法名
  4. 4. 属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串 [object Object]

js定对象的属性,有2中方法

1
2
3
4
5
//方法一
obj.name = 'hjai';

//方法二
obj['na' + 'me'] = 'hjai';

方法一:用标识符作为属性名.
方法二:表达式作为属性名.要将表达式放在方括号内.

使用字面量定义对象的属性

es5只能使用标识符定义属性

1
2
3
let obj = {
name = 'hjai'
}

无法使用表达式定义对象属性.

es6允许表达式这样干了.

1
2
3
4
let name = 'name';
let obj = {
[name] = 'hjai'
}

表达式还可以定义方法名

1
2
3
4
5
6
7
let sayName = 'sayName';

let obj = {
[sayName](){
console.log('my name is hjai');
}
}

属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串 [object Object]

1
2
3
4
5
6
7
8
9
const keyA = {a: 1};
const keyB = {b: 2};

const myObject = {
[keyA]: 'valueA',
[keyB]: 'valueB'
}

myObject // Object {[object Object]: "valueB"}

上面代码中,[keyA][keyB] 得到的都是 字符串[object Object],所以 [keyB] 会把 [keyA] 覆盖掉,而 myObject 最后只有一个 [object Object] 属性。

文章目录
  1. 1. js定对象的属性,有2中方法
  2. 2. 使用字面量定义对象的属性
    1. 2.1. es6允许表达式这样干了.
  3. 3. 表达式还可以定义方法名
  4. 4. 属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串 [object Object]