千家信息网

ES6对象有什么用

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了ES6对象有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ES6全称 ECMAScript 6.0 ,是 Ja
千家信息网最后更新 2025年11月08日ES6对象有什么用

这篇文章主要介绍了ES6对象有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

ES6全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版,ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 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对象有什么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

对象 属性 参数 运算 运算符 目标 篇文章 表达式 拷贝 版本 简洁 两个 函数 变量 同时 效果 数组 方法 浏览器 表示法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全参与重保 app专业开发软件开发 网络安全运维题库及答案大全 青岛大学网络安全系考研成绩 崇明区项目数据库服务商前景 优化政府管理服务器 软件开发要多少成本 帝国神话创建服务器出现一堆代码 微信摇一摇赛跑软件开发 抖音我的世界服务器大喇叭 软件开发零基础可以学么 网络安全无小事是谁说的 数据库的表空间可以缩小吗 集群服务器部署完成后怎么测试 所有权数据库标准 ppt展示数据库 5g网络技术能改变什么 我的世界免费创服务器 国家网络安全宣传周黑龙江 mc最热门的空岛服务器 如何在局域网建立一个数据库 软件开发 笔记本选择 cmcc无线网络安全吗 数据库字段和页面显示的转换 云服务器安全组怎么配置22端口 软件开发实施组织计划 安卓软件开发计划 erp系统服务器管理规定 数据库取整 网站数据库是不是就是空间
0