返回

ES6第四天:对象与数组的扩展运算符

前端

一、对象的扩展

1.1 属性简洁表示法

ES6中,我们可以用简化的语法来定义对象的属性,这种语法被称为属性简洁表示法。具体来说,就是我们可以直接用变量名作为对象的属性名,而不需要再写成key: value的形式。

const name = 'John Doe';
const age = 30;

const person = {
  name,
  age
};

console.log(person); // { name: 'John Doe', age: 30 }

1.2 属性名表达式

属性名表达式允许我们在定义对象属性时使用表达式。这样,我们就可以动态地生成对象的属性名。

const key = 'age';
const value = 30;

const person = {
  [key]: value
};

console.log(person); // { age: 30 }

1.3 Object.is() 用来判断是否严格相等

Object.is()方法可以用来判断两个值是否严格相等。严格相等意味着两个值在类型和值上都完全相等。

console.log(Object.is(1, 1)); // true
console.log(Object.is('foo', 'foo')); // true
console.log(Object.is(true, true)); // true
console.log(Object.is(null, null)); // true
console.log(Object.is(undefined, undefined)); // true

console.log(Object.is(1, '1')); // false
console.log(Object.is('foo', 'bar')); // false
console.log(Object.is(true, false)); // false
console.log(Object.is(null, undefined)); // false

1.4 对象的扩展运算符

对象的扩展运算符(...)允许我们将一个对象的所有属性复制到另一个对象。

const obj1 = {
  name: 'John Doe',
  age: 30
};

const obj2 = {
  ...obj1,
  city: 'New York'
};

console.log(obj2); // { name: 'John Doe', age: 30, city: 'New York' }

1.5 Object.assign()

Object.assign()方法也可以用来将一个对象的所有属性复制到另一个对象。它的用法与对象的扩展运算符类似,但有一些细微的区别。

const obj1 = {
  name: 'John Doe',
  age: 30
};

const obj2 = Object.assign({}, obj1, {
  city: 'New York'
});

console.log(obj2); // { name: 'John Doe', age: 30, city: 'New York' }

二、数组的扩展运算符

数组的扩展运算符(...)允许我们将一个数组的所有元素复制到另一个数组。

const arr1 = [1, 2, 3];

const arr2 = [...arr1, 4, 5];

console.log(arr2); // [1, 2, 3, 4, 5]

数组的扩展运算符还可以用来将一个数组的所有元素复制到另一个数组的指定位置。

const arr1 = [1, 2, 3];

const arr2 = [0, ...arr1, 4];

console.log(arr2); // [0, 1, 2, 3, 4]

总结

ES6的第四天,我们学习了对象的扩展运算符和数组的扩展运算符。这些操作符允许我们在创建对象和数组时使用更简洁和灵活的语法。