简介表示法(直接写入变量和函数,作为对象的属性和方法)

let x = "test"
let obj={
x, //属性名为变量名,属性值为变量值
y(){console.log("hello")}
}
//以上相当于
let obj = {
x:'test',
y:function(){
console.log("hello")
}
}

属性名表达式(表达式作为对象的属性名,把表达式放在方括号内。)

let aa = "hello";
let obj = {
[aa]: "hello",
["a" + "b"]: "es6"
}
//以上相当于
let obj = {
hello: "hello",
"ab": "es6"
}

对象方法的name属性(返回函数名)

let obj = {
"hello": "hello",
foo: function () { }
}
console.log(obj.foo.name)

Object.is()(比较两个值是否严格相等,相当于===,但是-0不等于0,NaN=NaN)

Object.is({}, {}) //false
Object.is(-0, 0) //false
Object.is(NaN, NaN) //true

Object.assign()(用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target))

let obj1 = {a:1};
let obj2 = {b:2};
let objx = {b:4};
let obj3 = Object.assign(obj1,obj2); //{ a: 1, b: 2 }
let obj4 = Object.assign(obj1,obj2,obj3) //{ a: 1, b: 4 } 如果有相同的属性名,后者覆盖前者

注意:

  • 浅拷贝对象(源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。)
const obj1 = {a: {b: 1}};
const obj2 = Object.assign({}, obj1); obj1.a.b = 2;
obj2.a.b //
  • 处理数组
//把数组的索引当做key来生成对象
Object.assign([1, 2, 3], [4, 5]) //[4,5,3]
  • 取值函数(先取值,后复制)
const source = {
get foo(){
return 1
}
}
let a =Object.assign({},source) //{ foo: 1 }

Object.keys(),Object.values(),Object.entries()(都返回数组形式)

let obj = {a: 0,b: 1,c: 2};
let a = Object.keys(obj) //["a","b","c"]
let b = Object.values(obj) //[0,1,2]
let c = Object.entries(obj) //[["a":0],["b":1],["c":2]]

扩展运算符...

  • 解构赋值(解构赋值的拷贝是浅拷贝)
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x //
y //
z // { a: 3, b: 4 } let obj = { a: { b: 1 } };
let { ...x } = obj;
obj.a.b = 2;
x.a.b //
  • 扩展运算符(取出参数对象的所有可遍历属性,拷贝到当前对象之中)
let z = { a: 3, b: 4 };
let n = { ...z }; // { a: 3, b: 4 } //等同于
let n = Object.assign({},z) // { a: 3, b: 4 }

ES6学习之对象扩展的更多相关文章

  1. ES6 - 基础学习(6): 对象扩展

    对象对于JavaScript至关重要,在ES6中对象又加了很多新特性. 对象字面量:属性的简洁表示法 ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值. let attr1 = & ...

  2. ES6入门之对象扩展

    ES5对象(超类)原有: 属性:construct构造函数 方法: object.hasOwnProperty( propertyName ) //检测是否有一个本地的属性而不是继承的,返回boole ...

  3. ES6学习之数组扩展

    扩展运算符(...将数组分割为用逗号分割的参数序列) console.log(...[1,2,3]) //1 2 3 可替换数组的apply写法: function test(x,y,z){ cons ...

  4. ES6学习之函数扩展

    函数默认参数 function test(x = 1, y = 2) { return x + y } test(5, 6) test() 若默认参数在必须参数之前,要想取得默认参数,只有当传入的值为 ...

  5. es6 语法 (对象扩展)

    { //简洁表示法 let o = 1; let k = 2; let es5 = { o:o, k:k }; let es6 = { o,k }; console.log(es5,es6); //1 ...

  6. ES6学习之数值扩展

    二进制和八进制表示法(二进制用前缀0b(或0B)表示,八进制用前缀0o(或0O)表示) Number('0b111') Number('0o10') Number.isFinite()(判断一个值是否 ...

  7. ES6学习之正则扩展

    RegExp正则函数 var reg = new RegExp("abc","igm"); //等价于 var reg = new RegExp(/abc/ig ...

  8. ES6 学习 -- Promise对象

    1.promise含义:可以将promise对象看成是一个容器,它保存着未来才会结束的某个事件(一般是异步操作事件)的结果,各 种异步操作都可以用promise对象来处理promise的特点:(1)p ...

  9. ES6学习笔记(8)----对象的扩展

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 对象的扩展 1.属性名的简洁表示法 : ES6允许在代码中直接写变量,变量名是属性名,变量值是属 ...

随机推荐

  1. python基础8 -----迭代器和生成器

    迭代器和生成器 一.迭代器 1.迭代器协议指的是对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2. ...

  2. dos与unix文件格式之间的转换

    1. VI编辑器中转换 在VI中使用命令 set ff?(fileformat)可以查看文件的格式,使用set ff=dos(unix)可以设置文件的格式 2.使用sed处理(来至http://www ...

  3. LyX中文配置

    环境:OS X 10.9; MacTeX-2014; LyX Version 2.1.0 LyX是一个“WYSIWYM”(What You See Is What You Mean)的文字排版系统.其 ...

  4. mysql存储引擎(待补充)

    数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎 存储引擎说白了就是如何存取数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在 ...

  5. mail

    mail.php  <?php require_once('class.phpmailer.php'); $mail = new PHPMailer(); //实例化 $mail->IsS ...

  6. c的详细学习(7)指针学习(一)

    指针是c语言的一个重要概念,指针类型是c语言最有特色的数据类型: *利用指针编写的程序可使调用函数共享变量或数据结构,实现双向数据通信: *可以实现内存空间的动态存储分配:可以提高程序的编译效率和执行 ...

  7. 《程序员代码面试指南》第一章 栈和队列 构造数组的MaxTree

    题目 给出一个无重复元素的数组,构造此数组的MaxTree, java代码 /** * @Description: 构造数组的MaxTree * @Author: lizhouwei * @Creat ...

  8. 【Flask】Sqlalchemy 常用数据类型

    ### SQLAlchemy常用数据类型:1. Integer:整形,映射到数据库中是int类型.2. Float:浮点类型,映射到数据库中是float类型.他占据的32位.3. Double:双精度 ...

  9. 算法(Algorithms)第4版 练习 1.5.14

    package com.qiusongde; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; pu ...

  10. JavaWeb -- Session应用实例 -- 随机中文验证码 检验

    注册页面 login.html <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html ...