【ES6】JavaScript对象-增强的对象语法-属性值简写-可计算属性-简写方法名

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菌

参考资料

  1. JavaScript高级程序设计(第四版)P213-216 https://www.ituring.com.cn/book/2472

猜你喜欢

转载自blog.csdn.net/weixin_44972008/article/details/112910925
今日推荐