ES6学习之对象扩展
简介表示法(直接写入变量和函数,作为对象的属性和方法)
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学习之对象扩展的更多相关文章
- ES6 - 基础学习(6): 对象扩展
		对象对于JavaScript至关重要,在ES6中对象又加了很多新特性. 对象字面量:属性的简洁表示法 ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值. let attr1 = & ... 
- ES6入门之对象扩展
		ES5对象(超类)原有: 属性:construct构造函数 方法: object.hasOwnProperty( propertyName ) //检测是否有一个本地的属性而不是继承的,返回boole ... 
- ES6学习之数组扩展
		扩展运算符(...将数组分割为用逗号分割的参数序列) console.log(...[1,2,3]) //1 2 3 可替换数组的apply写法: function test(x,y,z){ cons ... 
- ES6学习之函数扩展
		函数默认参数 function test(x = 1, y = 2) { return x + y } test(5, 6) test() 若默认参数在必须参数之前,要想取得默认参数,只有当传入的值为 ... 
- es6 语法 (对象扩展)
		{ //简洁表示法 let o = 1; let k = 2; let es5 = { o:o, k:k }; let es6 = { o,k }; console.log(es5,es6); //1 ... 
- ES6学习之数值扩展
		二进制和八进制表示法(二进制用前缀0b(或0B)表示,八进制用前缀0o(或0O)表示) Number('0b111') Number('0o10') Number.isFinite()(判断一个值是否 ... 
- ES6学习之正则扩展
		RegExp正则函数 var reg = new RegExp("abc","igm"); //等价于 var reg = new RegExp(/abc/ig ... 
- ES6 学习 -- Promise对象
		1.promise含义:可以将promise对象看成是一个容器,它保存着未来才会结束的某个事件(一般是异步操作事件)的结果,各 种异步操作都可以用promise对象来处理promise的特点:(1)p ... 
- ES6学习笔记(8)----对象的扩展
		参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 对象的扩展 1.属性名的简洁表示法 : ES6允许在代码中直接写变量,变量名是属性名,变量值是属 ... 
随机推荐
- ubuntu编译内核模块报错:Required key not available 的解决
			系统为ubuntu18.04, 在编译内核模块insmod helloworld.ko的时候提示如下错误. 出现此问题的原因是,Ubuntu Kernel 使用 EFI_SECURE_BOOT_SIG ... 
- STM32 ~ 串口DMA通道查找
			STM32F4XX: /**************************************************************************************** ... 
- Linux基础系列:常用命令(7)_正则表达式
			一.环境边量 每个用户登录shell需要执行的四个文件 /etc/profile /home/egon/.bashrc_profile /home/egon/.bashrc /etc/bashrc 非 ... 
- php 实现简单抽奖
			首先有一组数据,里面有中奖的物品和概率 $base_data = [ ['name'=>'特等奖','num'=>1], ['name'=>'一等奖','num'=>5], [ ... 
- 【leetcode刷题笔记】Convert Sorted List to Binary Search Tree
			Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ... 
- 321list,元组,range**数字是不可迭代的!
			一.list(列表) 列表是python中的基础数据类型之一,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型.列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据, ... 
- nginx rewrite标签配置以及用户认证配置
			一.nginx rewrite标签 rewrite 实现URL的改写主要是实现伪静态 1. rewrite指令语法 指令语法:rewrite regex replacement[flag] 默认值 ... 
- 解决css的float父div没有高度
			在做页面设计常会碰到css的float父div没有高度的情况,HTML代码设计 <div class='box'> <div class='float_left'></d ... 
- 总结最近写的h5项目
			其实最近最大的感触就是真正独立完结一个项目的人学到的东西是最多,但并不意味着自己已全部吸收,还是得消化消化 最近做了一个移动端的h5页面,感兴趣的可以访问看一看:http://app.500jia.c ... 
- DL三(向量化编程 Vectorized implementation)
			向量化编程实现 Vectorized implementation 一向量化编程 Vectorization 1.1 基本术语 向量化 vectorization 1.2 向量化编程(Vectoriz ... 
