您的位置:首页 > 文旅 > 旅游 > 网上商店是指_国外免费建站网站不用下载_化工网站关键词优化_河北百度推广seo

网上商店是指_国外免费建站网站不用下载_化工网站关键词优化_河北百度推广seo

2025/3/10 12:08:06 来源:https://blog.csdn.net/qq_53002037/article/details/146045916  浏览:    关键词:网上商店是指_国外免费建站网站不用下载_化工网站关键词优化_河北百度推广seo
网上商店是指_国外免费建站网站不用下载_化工网站关键词优化_河北百度推广seo

我们都应该有重头再来的勇气!

目录

  • 对象简写:
    • 方法的简写:
    • 属性的简写:
  • 对象属性 表达式
  • Object.assign:
  • 扩展运算符(ES2018/ES9)-浅拷贝:
  • Object.is:

对象简写:

方法的简写:

以前的写法:

 let obj = {name: 'kitty',test1: function () {},test2: function () {}}

现在的写法:在对象中定义方法时,如果方法的名称与函数名称相同,也可以进行简写

let obj = {name: 'kitty',test1 () {},test2 () {}
}

属性的简写:

以前的写法:

let name = 'kitty'let obj = {name: name
}

现在的写法:当对象属性的键(key)与要赋值的变量名相同时,可以只写一个名称

let name = 'kitty'let obj = {name, // 等价于 name:name
}

对象属性 表达式

对象属性可以变成变量。使用[]将对象属性框起来,并且可以在内部进行字符串拼接。如下代码显示:

let name = 'a'
let obj = {name: 'kitty'}
let obj2 = {[name + 'bc']: 'kitty'}
console.log(obj); // {name: 'kitty'}
console.log(obj2);// {abc: 'kitty'}

如果我想让每个方法名带一个name的值该怎么办?使用对象属性表达式 :

let name = 'moduleA'
let obj = {name,[name + "test1"] () {},[name + "test2"] () {}}
console.log(obj);// {name: 'moduleA', moduleAtest1: ƒ, moduleAtest2: ƒ}

Object.assign:

ES6提供的快速合并对象的方法Object.assign。
他的语法是:

Object.assign(target, ...sources)

参数说明:

  • target‌:目标对象。这是接收源对象属性的对象,并且也是 Object.assign() 方法修改后的返回值。换句话说,Object.assign() 方法会修改这个对象,并返回它。‌
  • sources‌:源对象(一个或多个)。这些对象的自身可枚举属性将被复制到目标对象中。可以传递多个源对象,它们的属性将被依次复制到目标对象中。如果源对象中有相同的属性名,则后面的源对象属性会覆盖前面的源对象属性。
let obj = {name: 'kitty'}
let obj1 = {name: 'Alice'}
let obj2 = {age: 100}
console.log(Object.assign(obj, obj1, obj2));// {name: 'Alice', age: 100}
console.log(obj); // {name: 'Alice', age: 100}
console.log(obj1); // {name: 'Alice'}
console.log(obj2); // {age: 100}

如果不想被影响就开一个新的 obj 用来存储三者合并的结果。

let objAll = {}
let obj = {name: 'kitty'}
let obj1 = {name: 'Alice'}
let obj2 = {age: 100}
console.log(Object.assign(objAll, obj, obj1, obj2));// {name: 'Alice', age: 100}console.log(objAll); //{name: 'Alice', age: 100}
console.log(obj); // {name: 'kitty'}
console.log(obj1); // {name: 'Alice'}
console.log(obj2); // {age: 100}

扩展运算符(ES2018/ES9)-浅拷贝:

扩展运算符/展开运算符都可以,之前数组讲的 ... 东西

let obj = {name: 'kitty'}
let obj1 = {...obj}
console.log(obj1);// {name: 'kitty'}

复制之后的对象修改值不会影响复制前的那个对象:

let obj = {name: 'kitty'}
let obj1 = {...obj}
obj1.name = 'Alice'
console.log(obj);// {name: 'kitty'}
console.log(obj1);// {name: 'Alice'}

合并两个对象【两个对象中没有一样的属性】:

let obj = {name: 'kitty'}
let obj1 = {age: 100}
console.log({ ...obj, ...obj1 });// {name: 'kitty', age: 100}

合并两个对象【两个对象中有一样的属性】
如果两个对象中有属性名一样的属性,那么后面的值会将前面的值覆盖掉:

let obj = {name: 'kitty'}
let obj1 = {name: 'Alice'}
console.log({ ...obj, ...obj1 });// {name: 'Alice'}

即 相同覆盖,不同合并 【凭什么后来者居上,因为先者不 ~ 争 ~ 不 ~ 抢 ~ ,所以会被覆盖掉】

Object.is:

能够判断两个值是否相等。
因为 === 无法判断 NaN 是否相等。。。所以引进 Object.is,与=== 几乎一致,但是有两点不一样:

  1. 他可以判断NaN和NaN是否相等
console.log(Object.is(5, 5));  // true
console.log(Object.is(5, "5")); // false
console.log(Object.is({}, {})); // false
console.log(Object.is(NaN, NaN)); // true
console.log(Object.is(parseInt("Alice"), NaN)); // true
  1. 他可以判断 +0 和 -0 是否相等
console.log(Object.is(+0, -0)); // false
console.log(+0 === -0); // true

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com