es6对象的扩展
对象(object)是 JavaScript 最重要的数据结构之一。
object 在es6中新增了很多便利的方法
在es6中允许直接写入变量和方法的名称直接作为对象的属性
let x =1 ,y=2
const obj ={x,y}
console.log(obj)
//{x: 1, y: 2}
这种写法等同于
let x = 1,y = 2
const obj = {
'x':x,
'y':y
}
方法同理
const obj2 = {
methods() {
return {
x,
y
}
}
}
const obj3 = {
methods:function() {
return {
x,
y
}
}
}
console.log(obj2.methods())
//{x: 1, y: 2}
console.log(obj3.methods())
//{x: 1, y: 2}
这种简洁写法在vue中用到的地方很多 比如导出和创建实例时等等
另外就是es6中允许对象的属性用表达式
const item="item"
const obj4 ={
"item":"hello"
} console.log(obj4.item)
// hello
console.log(obj4[item])
// hello
但是属性名表达式和简洁表达法不能同时使用
会报错Uncaught SyntaxError: Unexpected token }或者干脆直接给你提示
如果你的key值传进去的是一个对象的话那么他的key会默认转换成一个字符串 “[object Object]”
const item2 = {
a: 1
};
const item3 = {
b: 2
};
const obj5 = {
[item2]: 'value',
[item3]: 'value'
};
console.log(obj5)
// {[object Object]: "value"}
对象的方法里边有一个name属性可以点出来 用上边的例子说明
const obj5 = {
[item2]: 'value',
[item3]: 'value',
con(){}
};
console.log(obj5)
// {[object Object]: "value"}
console.log(obj5.con.name)
//con
返回的name是一个字符串
这个在con声明的时候也是声明的一个字符串 :function(){ XXX}这样
阮一峰老师的博客里边讲到 对象的每个属性都有一个描述对象(Descriptor)
用来控制该属性的行为。Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。

他在博客里边讲了enumerable这个特性 是指可枚举性 如果这个为false的话 该对象就不能够被遍历
那么另外的三个属性都是什么意思呢
value这个肯定都知道就不说了
这个writable 这个特性是指属性的是否只读 如果这个属性被更改为false的时候这个属性的值 是指能被读取而不能被修改的
另外一个configurable这个特性是指属性的基础操作 如果这个属性为false的时候 他会告诉js引擎 不可以删除delete这个属性和修改update这个属性
Object.keys(obj)
这个方法可以返回所有的可枚举的属性的key值,比较实用
super关键字
这个关键字只可以在对象的方法里边使用 他会指向对象的原型对象的属性,如果不是用在对象的方法里边就会报错
对象的扩展运算符 ...(三个点)
这个运算符和数组的的差不多 不同的是 他的右边赋值对象必须是一个对象 不能是undefind或者null 否则就会报错
let { x, y, ...z } = null; // 运行时错误
let { x, y, ...z } = undefined; // 运行时错误
但是他可以直接 ...undefind
{...undefined} // {}
会返回一个空对象
另外 对象的扩展运算符不一定要放在最后,可以放在前边,但是同名属性会被覆盖掉
这个在平时项目中的赋值里边应该会很遍历 不用再很冗余的写一大堆的赋值
最后 扩展运算符里边也是支持三元运算符的 粘贴一个例子
const obj = {
...(x > 1 ? {a: 1} : {}),
b: 2,
};
以上是对es6对象的扩展的理解 如有不足之处希望批评指正
es6对象的扩展的更多相关文章
- Es6对象的扩展和Class类的基础知识笔记
/*---------------------对象的扩展---------------------*/ //属性简写 ,属性名为变量名, 属性值为变量的值 export default functio ...
- ES6对象的扩展及新增方法
1.属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. const foo = 'bar'; const baz = {foo}; baz//{foo:'bar ...
- web前端之es6对象的扩展
1.属性的简洁表示法 2.属性名表达式 表达式作为对象的属性名 3.方法的 name 属性 例如:函数的name 属性,返回函数名. 4.Object.is() ES 比较两个值是否相等,只有两个运算 ...
- ES6 对象的扩展(下)
属性的可枚举性 对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为.Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象. var ob ...
- ES6 对象的扩展(上)
属性的简介表示法 允许直接写入变量和函数作为对象的属性和方法,这样的书写更简洁. function f( x, y ) { return { x, y }; } // 等同于 function f( ...
- es6 对象的扩展
一.现在还有很多浏览器不能直接使用es6语法.特别是手机端的一些低版本的浏览器.都需要用bale转换一下. 但是目前流行的框架中(vue,react,angular).都有自己的脚手架,都能用webp ...
- ES6 对象的扩展 Object.assign()
Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). const target = { a: 1 }; const source1 ...
- ES6 对象的扩展 Object.is()
ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===).它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0. ES6 提出“Same-va ...
- ES6对象扩展
前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象 ...
随机推荐
- 刘志梅201771010115.《面向对象程序设计(java)》第十四周学习总结
实验十四 Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1)设计模式:反复使用.经过分类编目的.代码设计经验的总结. 在Alexander的模式分类和软件模式的分类 ...
- SpringBoot+Mybatis实现关联查询
SpringBoot+Mybatis实现关联查询 今天学习了下Mybatis的动态查询,然后接着上次的Demo改造了下实现表的关联查询. 话不多说,开始今天的小Demo 首先接着上次的项目 https ...
- 4-HBase
定义: HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Goog ...
- zk开机自动启动脚本
[Unit] Description=Zookeeper service After=network.target [Service] User=www Group=www SyslogIdentif ...
- JAVA学习记录(二)————JAVA中的IO
Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. 数据流是一串连续不断的数据的集合,就象水 ...
- ActiveMQ(4)---ActiveMQ原理分析之消息消费
消费端消费消息的原理 我们通过上一节课的讲解,知道有两种方法可以接收消息,一种是使用同步阻塞的MessageConsumer#receive方法.另一种是使用消息监听器MessageListener. ...
- 深入理解Java虚拟机读书笔记1----Java内存区域与HotSpot虚拟机对象
一 Java内存区域与HotSpot虚拟机对象 1 Java技术体系.JDK.JRE? Java技术体系包括: · Java程序设计语言: · 各种硬件平台上的 ...
- python之路:模块初识
python王者开发之路:模块初识 模块初识我现在讲的确有点早.不过没关系,后面我会详细说模块. 模块,也就是库,是python三剑客之一.这三剑客,函数.库和类,都是由程序编写而成的.之所以我先说模 ...
- cuda 配置要点
1. 安装驱动 :sudo apt-get install nvidia- 2. 安装cuda : cuda 文件中包含驱动程序,因此在安装过程中当被问及是否安装驱动时,选择no 3. 安装cudnn ...
- H5-处理支付-前端部分
调用后台支付接口,得到返回数据 1.如果是支付宝,需要后台配置支付成功的回调页面路径,还要在页面创建一个标签装表单内容,此处是id为box的div标签 <div id="box&quo ...