ES6新增对象的方法

1.Object.is(): 判断两个值是否相等
Object.is(“NaN”,“NaN”) ------->true
修正了原来ES5中关于NaN存在的问题

2.Object.assign(): 用来合并对象

	let json1 = {a:1};
	let json2 = {b:2};
	let json3 = {c:3};
	let obj = Object.assign( {},json1,json2,json3 );
	console.log(obj);    //obj = {a:1,b:2,c:3}

如果对象中有重复的元素的话,那么前边的属性值会被后边对象的属性值覆盖

	let json1 = {a:1};
	let json2 = {b:2};
	let json3 = {b:3};
	let obj = Object.assign( {},json1,json2,json3 );
	console.log(obj);    //obj = {a:1,b:3}

还可以利用Object.assign方法来复制对象

	let person = {
	    name: "wang",
	    age: 18,
	    sex: "female"
	}
	let newObj = Object.assign({},person);
	newObj.lastName = "Yuan";
	console.log(newObj);    //{name: "wang", age: 18, sex: "female", lastName: "Yuan"}
	console.log(person);   //{name: "wang", age: 18, sex: "female"}

3.Object.keys():返回对象的索引,返回值是一个数组
4.扩展运算符也可以应用在对象身上
例如:

let json = {
            a: 2,
            b: 3,
            c: 4,
            d: 5
        };
        let {a,b,...c} = json;
        console.log(a,b,c);   //2 3 {c: 4, d: 5}

还可以利用扩展运算符快速复制对象

let json2 = {...json};    //json2 =  {a: 2,b: 3, c: 4,d: 5}
<think>好的,用户想了解ES6新增方法和特性,我需要根据提供的引用资料来组织回答。首先,系统指令要求使用中文,并且数学公式要用正确的LaTeX格式,但这里的问题是关于JavaScript的ES6,所以可能不需要数学公式。不过要确保行内代码用反引号,独立代码块用三个反引号并指定语言。 用户提供的引用有四个,引用1提到ES6的主要特性,包括let、const,引用3提到数组新增方法如isArray、from、of,以及实例方法entries、keys、values。引用4详细解释了作用域的变化,从var到let和const的块级作用域。引用2则是总结性的,建议深入学习。 我需要先整理ES6的主要新特性,按照引用中的内容来分类。比如,变量声明、箭头函数、模板字符串、解构赋值、默认参数、类、模块化、Promise、数组方法对象属性简写、Symbol类型等。每个部分需要结合引用内容,并在适当的位置添加引用标记。例如,在讲let和const时,引用1和4都提到了,所以可能在末尾添加[^1][^4]。 还要注意用户特别提到“新增方法”,所以需要详细说明数组新增的API如Array.from、Array.of,以及实例方法如entries、keys、values。引用3提到了这些,所以需要标注[^3]。 另外,生成的相关问题要符合用户需求,可能需要包括ES6的其他特性、实际应用、与旧版区别、块级作用域的重要性、Promise解决的回调问题,以及模块化的好处等。要确保每个问题都能引导用户进一步学习,并且问题之间不重复。 最后,保持回答结构清晰,分点列出,每个特性简要说明,并附上代码示例。例如箭头函数可以用一个简单的例子,解构赋值也可以举例说明。同时,代码块要正确使用Python的标记?不,应该是JavaScript的代码示例,所以语言要指定为javascript,比如: ```javascript // 示例代码 ``` 检查是否有遗漏的引用,比如引用2可能用在总结部分,鼓励用户深入学习,所以可能在最后一段提到参考文档时加上[^2]。 现在开始组织内容,确保每个部分都有对应的引用,并且相关问题覆盖用户可能感兴趣的方面。</think>### ECMAScript 2015 (ES6) 新增方法和特性 ES6 是 JavaScript 语言的一次重大更新,引入了多项改进以提升代码简洁性、可读性和功能性。以下是核心新增方法和特性: --- #### 1. **变量声明:`let` 和 `const`** - **`let`**:声明块级作用域的变量,解决了 `var` 的变量提升和重复声明问题。 - **`const`**:声明常量,不可重新赋值,但对象或数组的内容可修改。 ```javascript let count = 10; const PI = 3.1415; ``` #### 2. **箭头函数(Arrow Functions)** 简化函数语法,自动绑定当前作用域的 `this`。 ```javascript const add = (a, b) => a + b; ``` #### 3. **模板字符串(Template Literals)** 支持多行字符串和变量嵌入。 ```javascript const name = "Alice"; console.log(`Hello, ${name}!`); ``` #### 4. **解构赋值(Destructuring)** 简化从数组或对象中提取值的过程。 ```javascript const [x, y] = [1, 2]; // 数组解构 const { age, name } = { name: "Bob", age: 30 }; // 对象解构 ``` #### 5. **函数参数默认值** 允许为函数参数设置默认值。 ```javascript function greet(name = "Guest") { return `Hello, ${name}!`; } ``` #### 6. **类(Class)** 提供更清晰的面向对象语法。 ```javascript class Person { constructor(name) { this.name = name; } sayHi() { console.log(`Hi, I'm ${this.name}`); } } ``` #### 7. **模块化(Modules)** 支持 `import` 和 `export` 语法实现模块化开发。 ```javascript // math.js export const sum = (a, b) => a + b; // app.js import { sum } from './math.js'; ``` #### 8. **Promise 对象** 解决回调地狱问题,优化异步操作。 ```javascript const fetchData = () => new Promise((resolve) => { setTimeout(() => resolve("Data received"), 1000); }); ``` #### 9. **数组新增方法** - **静态方法**:`Array.from()`(类数组转数组)、`Array.of()`(创建数组)[^3]。 - **实例方法**:`entries()`、`keys()`、`values()`(遍历数组索引和值)[^3]。 ```javascript const arr = Array.from("hello"); // ['h', 'e', 'l', 'l', 'o'] ``` #### 10. **对象属性简写与计算属性名** ```javascript const age = 25; const person = { age }; // 等价于 { age: age } const key = "id"; const obj = { [key]: 123 }; // 动态属性名 ``` #### 11. **Symbol 类型** 创建唯一标识符,常用于对象属性键。 ```javascript const sym = Symbol("unique"); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值