ES6-----学习系列八(对象扩展)

一、对象的简洁表示法  

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

  let es5_method={
    hello:function(){
      console.log(‘hello‘);
    }
  };
  let es6_method={
    hello(){
      console.log(‘hello‘);
    }
  };
  console.log(es5_method.hello(),es6_method.hello());
}

二、属性表达式 

{
  // 属性表达式
  let a=‘b‘;
  let es5_obj={
    a:‘c‘,
    b:‘c‘
  };

  let es6_obj={
    [a]:‘c‘ //[]里面就是一个表达式  这里相当于b:c
  }

  console.log(es5_obj,es6_obj);

}

三、新增api (Object.is()判断两个是否相等  相当于===        Object.assign()方法将源对象(source)的所有可枚举属性,复制到目标对象(target) 同名属性会进行覆盖  并且只进行浅拷贝)   

{
  // 新增API
  console.log(‘字符串‘,Object.is(‘abc‘,‘abc‘),‘abc‘===‘abc‘);//true true
  console.log(‘数组‘,Object.is([],[]),[]===[]);//false false

  console.log(‘拷贝‘,Object.assign({a:‘a‘},{b:‘b‘}));//{a:‘a‘,b:‘b‘} 

  let test={k:123,o:456};
  for(let [key,value] of Object.entries(test)){//这个和数组的entries是一样的,这里就不赘余了
    console.log([key,value]);
  }
}

四、扩展运算符 (这个babel支持的不是很好)  

{
  // 扩展运算符
  // let {a,b,...c}={a:‘test‘,b:‘kill‘,c:‘ddd‘,d:‘ccc‘};
  // c={
  //   c:‘ddd‘,
  //   d:‘ccc‘
  // }
}
时间: 2024-10-10 17:53:08

ES6-----学习系列八(对象扩展)的相关文章

Linux学习系列八:操作网口

一些相对高性能的单片机会带以太网接口,网口在MCU里算是比较复杂的外设了,因为它涉及到网络协议栈,通常情况下网络协议栈会运行在一个RTOS中,所以对普通单片机开发者来说网口使用起来相对难度较大一些.在Linux下网口是一个经常使用的接口,由于Linux具备成熟完备的网络通信协议栈,底层驱动厂家也都提供好了,所以使用起来相对方便的多.本篇对Linux下网口使用做个简单总结,希望对大家有所帮助. 内容主要包括使用buildroot来是实现ssh功能,UDP通信的例子,以及实际中容易犯的一个错误. 原

ES6学习笔记(二)——字符串扩展

相信很多人也和我一样,不喜欢这样循规蹈矩的逐条去学习语法,很枯燥乏味.主要是这样学完一遍之后,没过一段时间就忘到九霄云外了.不如实际用到的时候研究它记得牢靠,所以我就整理成笔记,加深记忆的同时便于复习查看. 在这样不断的学习过程中,也提高了自己的总结能力:) 1.字符串的遍历器接口 ES5,数组和对象可以进行遍历,使用for() 和 for...in,还有jq中的each()方法进行遍历. ES6为我们提供了字符串遍历器  for...of 循环遍历 优点:可以识别大于0xFFFF的码点,传统的

JavaScript学习笔记--ES6学习(五) 数值的扩展

ES6 对于数值类型 (Number) 进行了一下扩展: 1.对于二进制和八进制提供了新的写法 ES6对于二进制和八进制的数值提供了新的写法,分别用0b (或者0B) 和0o (或者0o) 表示.例如: 0b111110111 === 503 // true 0o767 === 503 //true 由于从ES5开始,严格模式中,八进制不再允许使用前缀0来表示,因此在ES6中进一步明确,要用0o来表示. 如果要将0b和0o前缀的字符串数值转换为十进制,要使用Number方法, 例如: var i

ES6 入门系列 - 函数的扩展

1函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello World 上面代码检查函数log的参数y有没有赋值,如果没有,则指定默认值为World.这种写法的

MVC3+EF4.1学习系列(八)-----利用Repository and Unit of Work重构项目

项目最基础的东西已经结束了,但是现在我们的项目还不健全  不利于测试 重复性代码多   层与层之间耦合性高  不利于扩展等问题.今天的这章 主要就是解决这些问题的.再解决这些问题时,自己也产生了很多疑问,理解的也并不是很透彻 ,希望我的疑问能在这里得到解答~~ 一.模式介绍 1.Repository 在<企业架构模式>中,通过用来访问领域对象的一个类似集合的接口,在领域与数据映射层之间进行协调.还有请大家参考这个  P OF EAA详细介绍 然后说下我对这个的感觉和疑问   怎么都觉得这个Re

ES6学习笔记--promise对象

Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更合理和更强大.它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象. Promise对象有以下两个特点. (1)对象的状态不受外界影响.Promise对象代表一个异步操作,有三种状态:Pending(进行中).Resolved(已完成,又称 Fulfilled)和Rejected(已失败).只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态.这也是Promi

目标跟踪学习系列八:Struck:Structured Output Tracking with Kernels(2011 ICCV)

看来人机交互不是我想象的那么简单的,还是要花很多的功夫来打基础的.于是再来学习Tracking相关的一些文章算法. 在认真的学习了压缩跟踪(CT)以后,确实觉得自己对Tracking有了比较好的了解.但是看了在测试集上面的效果,被欺骗了原来CT的效果在真实的摄像头上面是很差劲的.唯一的优点就是快. 因此,还得回来学习一些其他的精度比较高的方法!这里选择了Struck.是大牛学长推荐的.同时本文使用了非线性的SVM算法,也想顺便的学习一下. 文章代码的位置:http://www.samhare.n

Angular学习系列八:调用服务方法

1:创建服务:ng g service services/request 2:使用rxjs就需要在service 中引用: import { Observable } from 'rxjs'; 3:在组件中引用服务: import { RequestService } from '../../services/request.service'; constructor(public req: RequestService) 4:学习目标:调用服务方法,使用回调方法获取服务方法,使用异步promi

ES6学习之Promise对象

1.什么是Promise对象? Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.原生提供了Promise 对象.Promise 简单说就是一个容器,里面保存着之后才执行的事件.从语法层面来说,Promise 是一个对象,从它可以获取异步操作的消息.Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理. 2.Promise对象的特点 (1)首先Promise对象的状态不受外界影响.其次promise对象代表一个异步操作,有三种状

MVC学习系列——Model验证扩展

MVC中,实现了前端后端的验证. 前端验证.步骤: web.config这两个得开启: <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> JS设置 第一步:引入页面js @Scripts.Render("~/bundles/jque