1. 属性值简写

# 1. 属性值简写

  • 给对象添加属性,常常属性名和变量名是一样的
let name = 'YK菌';

let person = {
	name: name;
};

console.log(person); // { name: 'YK菌' }
  • 对象的属性值(name:name)可以简写成以下形式(name)
let name = 'YK菌';

let person = {
	name;
};

console.log(person); // { name: 'YK菌' }

# 2. 可计算属性

之前,不能在对象字面量中直接动态命名属性(变量的值作为属性)

const nameKey = 'name';
const ageKey = 'age';
const jobKey = 'job';

let person = {};
person[nameKey] = 'YK菌';
person[ageKey] = 18;
person[jobKey] = 'Student';

console.log(perosn); // {name: 'YK菌', age: 18, job: 'Student' }

有了可计算属性,就可以在对象字面量中完成动态属性赋值

const nameKey = 'name';
const ageKey = 'age';
const jobKey = 'job';

let person = {
	[nameKey] = 'YK菌'; //[]里面的内容作为表达式而不是字符串解析
	[ageKey] = 18;
	[jobKey] = 'Student';
};

console.log(perosn); // {name: 'YK菌', age: 18, job: 'Student' }

还可以是更复杂的表达式

const nameKey = 'name';
const ageKey = 'age';
const jobKey = 'job';
let uniqueToken = 0;

function getUniqueKey(key){
	return '${key}_${uniqueToken++';
}

let person = {
	[getUniqueKey(nameKey)] = 'YK菌'; //[]里面的内容作为表达式而不是字符串解析
	[getUniqueKey(ageKey)] = 18;
	[getUniqueKey(jobKey)] = 'Student';
};

console.log(perosn); //  {name_0: 'YK菌', age_1: 18, job_2: 'Student' }

# 3. 方法名简写

之前的完整写法

let person = {
	sayName: function(name){
		alert('我是 ${name} !');
};
person.sayName('YK菌'); //我是YK菌

方法名可以省略 :function

let person = {
	sayName(name){
		alert('我是 ${name} !');
};
person.sayName('YK菌'); //我是YK菌

# 4. 简写方法名和计算属性相互兼容

const methodKey = 'sayName';
let person = {
	[methodKey](name){
		alert('我是 ${name} !');
};
person.sayName('YK菌'); //我是YK菌

# Object.assign()

将多个源对象中的属性复制到一个目标对象中

Object.assign(target, ...source)

source对象覆盖到target对象中,并返回target对象

# Object.is()

判断两个值是否相等

# Object.entries()

const obj = {
  foo: 'value1',
  bar: 'value2'
}

console.log(Object.entries(obj)) // ['foo','value1'],['bar', 'value2']

// 使用for...of遍历普通对象
for(const [key, value] of Object.entries(obj)){
  console.log(key, value)
}

// 将对象转换成Map
new Map(Object.entries(obj))

# 参考资料

  1. JavaScript高级程序设计(第四版) (opens new window)P213-216 https://www.ituring.com.cn/book/2472
上次更新: 2022/4/21 22:21:34