千家信息网

怎么理解ES6对象

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要讲解了"怎么理解ES6对象",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么理解ES6对象"吧!对象字面量属性的简洁表示法ES6允许对象的
千家信息网最后更新 2025年01月20日怎么理解ES6对象

这篇文章主要讲解了"怎么理解ES6对象",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么理解ES6对象"吧!

对象字面量

属性的简洁表示法

ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值。

const age = 12;const name = "Amy";const person = {age, name};person   //{age: 12, name: "Amy"}//等同于const person = {age: age, name: name}

方法名也可以简写

const person = {  sayHi(){    console.log("Hi");  }}person.sayHi();  //"Hi"//等同于const person = {  sayHi:function(){    console.log("Hi");  }}person.sayHi();//"Hi"

如果是Generator 函数,则要在前面加一个星号:

const obj = {  * myGenerator() {    yield 'hello world';  }};//等同于const obj = {  myGenerator: function* () {    yield 'hello world';  }};

属性名表达式

ES6允许用表达式作为属性名,但是一定要将表达式放在方括号内。

const obj = { ["he"+"llo"](){   return "Hi";  }}obj.hello();  //"Hi"

注意点:属性的简洁表示法和属性名表达式不能同时使用,否则会报错。

const hello = "Hello";const obj = { [hello]};obj  //SyntaxError: Unexpected token } const hello = "Hello";const obj = { [hello+"2"]:"world"};obj  //{Hello2: "world"}

对象的拓展运算符

拓展运算符(...)用于取出参数对象所有可遍历属性然后拷贝到当前对象。

基本用法

let person = {name: "Amy", age: 15};let someone = { ...person };someone;  //{name: "Amy", age: 15}

可用于合并两个对象

let age = {age: 15};let name = {name: "Amy"};let person = {...age, ...name};person;  //{age: 15, name: "Amy"}

注意点

自定义的属性和拓展运算符对象里面属性的相同的时候:自定义的属性在拓展运算符后面,则拓展运算符对象内部同名的属性将被覆盖掉。

let person = {name: "Amy", age: 15};let someone = { ...person, name: "Mike", age: 17};someone;  //{name: "Mike", age: 17}

自定义的属性在拓展运算度前面,则变成设置新对象默认属性值。

let person = {name: "Amy", age: 15};let someone = {name: "Mike", age: 17, ...person};someone;  //{name: "Amy", age: 15}

拓展运算符后面是空对象,没有任何效果也不会报错。

let a = {...{}, a: 1, b: 2};a;  //{a: 1, b: 2}

拓展运算符后面是null或者undefined,没有效果也不会报错。

let b = {...null, ...undefined, a: 1, b: 2};b;  //{a: 1, b: 2}

对象的新方法

Object.assign(target, source_1, ···)

用于将源对象的所有可枚举属性复制到目标对象中。

基本用法

let target = {a: 1};let object2 = {b: 2};let object3 = {c: 3};Object.assign(target,object2,object3);  // 第一个参数是目标对象,后面的参数是源对象target;  // {a: 1, b: 2, c: 3
  • 如果目标对象和源对象有同名属性,或者多个源对象有同名属性,则后面的属性会覆盖前面的属性。
    如果该函数只有一个参数,当参数为对象时,直接返回该对象;当参数不是对象时,会先将参数转为对象然后返回。

  • Object.assign(3); // Number {3}
    typeof Object.assign(3); // "object"
    因为 null 和 undefined 不能转化为对象,所以会报错:

    Object.assign(null);       // TypeError: Cannot convert undefined or null to objectObject.assign(undefined);  // TypeError: Cannot convert undefined or null to object当参数不止一个时,null 和 undefined 不放第一个,即不为目标对象时,会跳过 null 和 undefined ,不报错Object.assign(1,undefined);  // Number {1}Object.assign({a: 1},null);  // {a: 1} Object.assign(undefined,{a: 1});  // TypeError: Cannot convert undefined or null to object

    注意点

    assign 的属性拷贝是浅拷贝:

    let sourceObj = { a: { b: 1}};let targetObj = {c: 3};Object.assign(targetObj, sourceObj);targetObj.a.b = 2;sourceObj.a.b;  // 2

    同名属性替换

    targetObj = { a: { b: 1, c:2}};sourceObj = { a: { b: "hh"}};Object.assign(targetObj, sourceObj);targetObj;  // {a: {b: "hh"}}

    数组的处理

    Object.assign([2,3], [5]);  // [5,3]

    会将数组处理成对象,所以先将 [2,3] 转为 {0:2,1:3} ,然后再进行属性复制,所以源对象的 0 号属性覆盖了目标对象的 0。

    Object.is(value1, value2)

    用来比较两个值是否严格相等,与(===)基本类似。

    基本用法

    Object.is("q","q");      // trueObject.is(1,1);          // trueObject.is([1],[1]);      // falseObject.is({q:1},{q:1});  // false

    与(===)的区别

    //一是+0不等于-0Object.is(+0,-0);  //false+0 === -0  //true//二是NaN等于本身Object.is(NaN,NaN); //trueNaN === NaN  //false

感谢各位的阅读,以上就是"怎么理解ES6对象"的内容了,经过本文的学习后,相信大家对怎么理解ES6对象这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

对象 属性 参数 运算 运算符 目标 表达式 拷贝 学习 简洁 两个 内容 函数 变量 效果 数组 方法 表示法 会报 先将 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 达梦数据库能查出什么数据 大象精灵软件开发有限公司老板 全国网络安全督察 服务器安全狗 ping 现实生活中如何维护网络安全 连云港软件开发技术公司 计算机网络技术包括计算机应用吗 浩鲸科技是互联网公司吗 无线网络安全知识偶像 图书馆数据库知识产权 江苏app软件开发哪里好 软件开发的活去哪找 csgo社区服务器怎么选狙 服务器只有一个盘而且是主分区 生信分析比对本地数据库搭建 软件开发非法经营罪 盐城手机软件开发创新服务 查看服务器压力 常用的服务器对应端口号 媒体针对网络安全的具体措施 软件开发企业行业人员配置比例 db数据库64位下载 数据库技术标杆 服务器类型以阻止 苏州专业软件开发平台 长泰天气预报软件开发 莱芜外贸erp软件开发公司 地铁网络安全系统 中国网络安全认证机构有哪些 首届全国网络安全宣传周
0