ES6系列--对象扩展
ES6允许直接写入变量和函数,作为对象的属性和方法。
var foo = 'bar'; var baz = {foo}; baz // {foo: "bar"}
var fa = 'aa';
var mu = function(){
console.log(1);
}
var bo = {fa,mu};
console.log(bo) //VM2019:6 {fa: "aa", mu: ƒ}
扩展:
Getters 和 setters
let obj = {get propName() {// getter, the code executed on getting obj.propName},set propName(value) {// setter, the code executed on setting obj.propName = value}
};
let user = {name: "John",surname: "Smith",get fullName() {return `${this.name} ${this.surname}`;},set fullName(value) {[this.name, this.surname] = value.split(" ");}
};// set fullName is executed with the given value.
user.fullName = "Alice Cooper";alert(user.name); // Alice
alert(user.surname); // Cooper
Javascript对象有两种属性,一种是数据属性,我们经常使用比较熟悉;第二种是访问器属性,本质就是获取和设置值的函数,但从代码上好像是正常属性
属性只能是访问器或数据属性,不能都是。如果我们视图给描述符同时提供get
和value
,会报错:
// Error: Invalid property descriptor.
Object.defineProperty({}, 'prop', {get() {return 1},value: 2
});
Object.js
Object.is('foo', 'foo') // true Object.is({}, {}) // false
+0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true
Object.defineProperty(Object, 'is', { value: function(x, y) { if (x === y) { // 针对+0 不等于 -0的情况 return x !== 0 || 1 / x === 1 / y; } // 针对NaN的情况 return x !== x && y !== y; }, configurable: true, enumerable: false, writable: true });
- function clone(origin) {
- let originProto = Object.getPrototypeOf(origin);
- return Object.assign(Object.create(originProto), origin);
- }
- const merge =
- (target, ...sources) => Object.assign(target, ...sources);
const DEFAULTS = { log:1, out:'html'};function proceeContent(option){ Object.assign({},DEFAULTS,options);};
Object.assign()
Object.assign
方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)
ES5有三个操作会忽略enumerable
为false
的属性。
for...in
循环:只遍历对象自身的和继承的可枚举的属性Object.keys()
:返回对象自身的所有可枚举的属性的键名JSON.stringify()
:只串行化对象自身的可枚举的属性- ES6新增了一个操作
Object.assign()
,会忽略enumerable
为false
的属性,只拷贝对象自身的可枚举的属性。 - 这四个操作之中,只有
for...in
会返回继承的属性。实际上,引入enumerable
的最初目的,就是让某些属性可以规避掉for...in
操作。
- ES6新增了一个操作
转载于:https://www.cnblogs.com/laopang/p/8359488.html
ES6系列--对象扩展相关推荐
- ES6新增语法与内置对象扩展
技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.什么是ES6 ES的全称是ECMAScript,它是由ECMA国际标准化组织制定的一项 ...
- 第九节:ES6为对象做了哪些扩展?
ES6不仅为字符串.数值和数组带来了扩展,也为对象带来了很多新特性.这一节,我们来一起学习一下对象的扩展. 对象的传统表示法 我们回顾一下,对象的传统表示法: let person = { " ...
- ES6新特性_ES6的对象扩展方法---JavaScript_ECMAScript_ES6-ES11新特性工作笔记040
然后我们看一下es6中的对象扩展方法 可以看到有个Object.is(120,121); 这个相当于判断是否相等,也就是是否是某个对象. 可以看到120,和121 不相等. 然后120和120相等. ...
- es6调用c语言sdk,ES6 关于对象的扩展-contracts-WinFrom控件库|.net开源控件库|HZHControls官网...
今天来简单说下ES6 中对象的扩展 首先回顾传统的对象表示法 let person={ 'name':'zhang', 'age':'20', 'play':function(){ alert('pl ...
- es6 内置对象扩展rest, Arry 扩展方法Array.from(),find(), findIndex(),includes()
1.es6内置对象扩展rest实参 2. Arry 扩展方法 (1)构造函数方法:Array.from() (2) find() (3) findIndex() (4)includ ...
- 大白话,讲编程之《ES6系列连载》汇总,再也不用翻历史消息了
想翻看以前的ES6系列章节,老是要查看公众号的历史消息,特别是在地铁里没wifi的时候,每次页面切换都要load很久,相当麻烦. 别怕,最懂你们的前端君又来了,来一篇完美的汇总,你要的ES6,都在这里 ...
- ES6 系列之 let 和 const
块级作用域的出现 通过 var 声明的变量存在变量提升的特性: if (condition) {var value = 1; } console.log(value); 复制代码 初学者可能会觉得只有 ...
- ES6 系列之 Babel 是如何编译 Class 的(上)
前言 在了解 Babel 是如何编译 class 前,我们先看看 ES6 的 class 和 ES5 的构造函数是如何对应的.毕竟,ES6 的 class 可以看作一个语法糖,它的绝大部分功能,ES5 ...
- ES6 系列之 WeakMap的使用示例
ES6 系列之 WeakMap的使用示例 这篇文章主要介绍了ES6 系列之 WeakMap的使用示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 前言 我们先从 Wea ...
最新文章
- [Contest20180316]Mythological IV
- c#设计模式-工厂方法
- “开启IT管理新时代”惠普软件客户论坛圆满闭幕
- ubuntu sendmail安装和使用具体实现[转]
- 光端机的作用有哪些?
- Java并发编程实战~volatile
- 企业类库 add access 2007
- 华中农业大学第五届程序设计大赛 (7/12)
- win7配置powershell环境变量
- 2019华为校园大使面试经验
- 常用编码与为何要encode和decode
- bugku bingo题解
- 牛客练习赛101 B-荒神在此
- 水管工游戏(代码附带注释)2020.10.6
- 【Java】maven-shaded-plugin超详细详解
- 左耳朵耗子、池建强、江南白衣、余晟、朱赟限时赠书,3000本好书速领!
- 360云服务器关闭后,360云盘宣布关闭!7个问题回答告诉你关闭之后怎么办?
- python人工智能的重要性_为什么说Python是AI时代必备技能?
- 你是否真的适合软件测试行业?
- MATLAB中cla函数
热门文章
- 718保时捷spyder_我要买保时捷718 Spyder的原因:新手也可以玩手动
- js中new实例化对象内部过程
- 网络推广中移动端优化如何在细节中取胜?
- 计算机电缆称赞千 捷网络下拉刷词,电脑常用技巧
- java location_JAVA setlocation()方法并不能定义组件的位置,setBounds()方法无法改变组件的大小。小白一枚...
- qt中label双击_qt关于QLabel控件的实现双击调用文件对话框
- oracle 实现HA,oracle RAC的客户端HA配置
- win7 python3环境变量设置_如何配置python3的环境变量
- java add offer_图解Java中的5大队列!(干货收藏)
- android 自定义actionbar前面有一块空白,解决Android V7后自定义Toolbar、ActionBar左侧有空白问题...