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对象有两种属性,一种是数据属性,我们经常使用比较熟悉;第二种是访问器属性,本质就是获取和设置值的函数,但从代码上好像是正常属性

属性只能是访问器或数据属性,不能都是。如果我们视图给描述符同时提供getvalue,会报错:

// Error: Invalid property descriptor.
Object.defineProperty({}, 'prop', {get() {return 1},value: 2
});

  

Object.js
ES5比较两个值是否相等
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
});  
  1. function clone(origin) {
  2. let originProto = Object.getPrototypeOf(origin);
  3. return Object.assign(Object.create(originProto), origin);
  4. }
  1. const merge =
  2. (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有三个操作会忽略enumerablefalse的属性。

  • for...in循环:只遍历对象自身的和继承的可枚举的属性
  • Object.keys():返回对象自身的所有可枚举的属性的键名
  • JSON.stringify():只串行化对象自身的可枚举的属性
    • ES6新增了一个操作Object.assign(),会忽略enumerablefalse的属性,只拷贝对象自身的可枚举的属性。  
    • 这四个操作之中,只有for...in会返回继承的属性。实际上,引入enumerable的最初目的,就是让某些属性可以规避掉for...in操作。

转载于:https://www.cnblogs.com/laopang/p/8359488.html

ES6系列--对象扩展相关推荐

  1. ES6新增语法与内置对象扩展

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.什么是ES6 ES的全称是ECMAScript,它是由ECMA国际标准化组织制定的一项 ...

  2. 第九节:ES6为对象做了哪些扩展?

    ES6不仅为字符串.数值和数组带来了扩展,也为对象带来了很多新特性.这一节,我们来一起学习一下对象的扩展. 对象的传统表示法 我们回顾一下,对象的传统表示法: let person = { " ...

  3. ES6新特性_ES6的对象扩展方法---JavaScript_ECMAScript_ES6-ES11新特性工作笔记040

    然后我们看一下es6中的对象扩展方法 可以看到有个Object.is(120,121); 这个相当于判断是否相等,也就是是否是某个对象. 可以看到120,和121 不相等. 然后120和120相等. ...

  4. es6调用c语言sdk,ES6 关于对象的扩展-contracts-WinFrom控件库|.net开源控件库|HZHControls官网...

    今天来简单说下ES6 中对象的扩展 首先回顾传统的对象表示法 let person={ 'name':'zhang', 'age':'20', 'play':function(){ alert('pl ...

  5. es6 内置对象扩展rest, Arry 扩展方法Array.from(),find(), findIndex(),includes()

    1.es6内置对象扩展rest实参 2.  Arry 扩展方法    (1)构造函数方法:Array.from()   (2) find()   (3) findIndex()   (4)includ ...

  6. 大白话,讲编程之《ES6系列连载》汇总,再也不用翻历史消息了

    想翻看以前的ES6系列章节,老是要查看公众号的历史消息,特别是在地铁里没wifi的时候,每次页面切换都要load很久,相当麻烦. 别怕,最懂你们的前端君又来了,来一篇完美的汇总,你要的ES6,都在这里 ...

  7. ES6 系列之 let 和 const

    块级作用域的出现 通过 var 声明的变量存在变量提升的特性: if (condition) {var value = 1; } console.log(value); 复制代码 初学者可能会觉得只有 ...

  8. ES6 系列之 Babel 是如何编译 Class 的(上)

    前言 在了解 Babel 是如何编译 class 前,我们先看看 ES6 的 class 和 ES5 的构造函数是如何对应的.毕竟,ES6 的 class 可以看作一个语法糖,它的绝大部分功能,ES5 ...

  9. ES6 系列之 WeakMap的使用示例

    ES6 系列之 WeakMap的使用示例 这篇文章主要介绍了ES6 系列之 WeakMap的使用示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 前言 我们先从 Wea ...

最新文章

  1. [Contest20180316]Mythological IV
  2. c#设计模式-工厂方法
  3. “开启IT管理新时代”惠普软件客户论坛圆满闭幕
  4. ubuntu sendmail安装和使用具体实现[转]
  5. 光端机的作用有哪些?
  6. Java并发编程实战~volatile
  7. 企业类库 add access 2007
  8. 华中农业大学第五届程序设计大赛 (7/12)
  9. win7配置powershell环境变量
  10. 2019华为校园大使面试经验
  11. 常用编码与为何要encode和decode
  12. bugku bingo题解
  13. 牛客练习赛101 B-荒神在此
  14. 水管工游戏(代码附带注释)2020.10.6
  15. 【Java】maven-shaded-plugin超详细详解
  16. 左耳朵耗子、池建强、江南白衣、余晟、朱赟限时赠书,3000本好书速领!
  17. 360云服务器关闭后,360云盘宣布关闭!7个问题回答告诉你关闭之后怎么办?
  18. python人工智能的重要性_为什么说Python是AI时代必备技能?
  19. 你是否真的适合软件测试行业?
  20. MATLAB中cla函数

热门文章

  1. 718保时捷spyder_我要买保时捷718 Spyder的原因:新手也可以玩手动
  2. js中new实例化对象内部过程
  3. 网络推广中移动端优化如何在细节中取胜?
  4. 计算机电缆称赞千 捷网络下拉刷词,电脑常用技巧
  5. java location_JAVA setlocation()方法并不能定义组件的位置,setBounds()方法无法改变组件的大小。小白一枚...
  6. qt中label双击_qt关于QLabel控件的实现双击调用文件对话框
  7. oracle 实现HA,oracle RAC的客户端HA配置
  8. win7 python3环境变量设置_如何配置python3的环境变量
  9. java add offer_图解Java中的5大队列!(干货收藏)
  10. android 自定义actionbar前面有一块空白,解决Android V7后自定义Toolbar、ActionBar左侧有空白问题...