ES6为对象带来的新特性。

对象传统的写法:

let person={

  'name':'Lily',

  'say':function(){

    alert('hello!');

  }

}

1、ES6中写法更简便

对象属性:

var name='Lily';

var age='13';

var person={name,age};

console.log(person)     //{name:'Lily',age:'13'}

对象方法:

var person={

  say(){      //省略了function

    alert('hello');

  }

}

2、属性名可以为表达式

当用字面量定义(用大括号{}定义)一个对象时,属性名或方法名可以是表达式。

var f='first';

var n='Name';

var s='say';

var h='Hello';

var person={

  [f+n]:'Zhang',

  [s+h](){

    return 'hello world';

  }

}

console.log(person.firstName)   //'Zhang'

console.log(person.sayHello())   //'hello world'

3、ES6为对象新增的函数

(1)Object.is()  :比较两个值是否严格相等。

首先我们来区分什么是严格相等和抽象相等:

  var str='12';var num=12;

  • 严格相等   (要求变量类型也相同)

   str===num   //false

  • 抽象相等 (将两边变量转化为同一类型再比较)

    str==num   //true

对于新增函数Object.is():Object.is(str,num)   //false

(2)Object.assign() :将源对象的属性值赋值到目标对象。

  let target={'a':1};

  let origin={'b':2,'c':3};

  Object.assign(terget,orgin);

  console.log(target)       //{a:1,b:2,c:3}

当源对象有与目标对象相同名字的属性时,会覆盖目标对象上的属性(后者覆盖前者);

Object.assign()可以接受多个源对象参数:

  let origin2={'d':4,'a':5};

  Object.assign(terget,orgin,orgin2);

  console.log(target)       //{a:5,b:2,c:3,d:4}

(3)Object.getPrototypeOf() :获取一个对象的prototype属性。

  function Person={

  }

 Person.prototype={

   say(){ console.log('hello'); }

  };

  let Lily=new Person();

  Lily.say();  //hello

获取Lily的prototype属性: Object.getPrototypeOf(Lily)   //say:function(){ ...}

可以实现继承:

(4)Object.setPrototypeOf()  : 设置对象的prototype属性

以(3)中的例子来说明:

  Object.setPrototypeOf(Lily,{

    say(){ console.log('hi') }

  })

  Lily.say()  //hi

_______________________________

参考:公众号 web前端教程

ES6 - 对象的更多相关文章

  1. ES6 对象解构

    ES6 对象解构 第一眼看到,什么鬼? const { body } = document `` 其实等于: const body = document.body ``` http://es6.rua ...

  2. ES6对象扩展

    前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象 ...

  3. ES6对象及ES6对象简单拓展

    ES6对象和传统的JS比较起来支持简写,比如说属性简写方法简写,还支持name属性,可以通过他迅速得到函数属性名表达式(如果是用bind方法创造的函数name属性会返回bound加上原函数的名字,Fu ...

  4. es6对象字面量增强

    相对于ES5,ES6的对象字面量得到了很大程度的增强.这些改进我们可以输入更少的代码同时语法更易于理解.那就一起来看看对象增强的功能.对象字面量简写(Object Literal Shorthand) ...

  5. es6对象的扩展

    对象(object)是 JavaScript 最重要的数据结构之一. object 在es6中新增了很多便利的方法 在es6中允许直接写入变量和方法的名称直接作为对象的属性 let x =1 ,y=2 ...

  6. ES5和ES6对象导出和导入(转载,待整理)

    1.import ... form...替代 require() //不接收对象 require:require('s.css'); //(es5) improt 's.css' //(es6) // ...

  7. es6对象内函数的两种写法

    es6对象内函数一般有两种写法: var person1 = { name: "p1", sayThis() { console.log(this); } }; var perso ...

  8. es6 对象浅拷贝的2种方法

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  9. ES6(对象扩展)

    ES6(对象(object)新增特性) 1.简介表示法 o,k 为属性:这种为无方法的情况. 这种为有方法. 2.属性表达式 ES6中,[a]就是 b . 3.新增API 1.数组也是引用类型 2.O ...

  10. ES6 对象拓展方法

    一,ES6 对象拓展方法 ES6为对象提供了一些拓展方法,下面列举几个比较常见的对象拓展方法.

随机推荐

  1. 安装VMWare tools,以及解决安装后/mnt中有hgfs但没共享文件的方法

    一.首先是安装VMWare tools   安装过程可参考:Installing VMware Tools in an Ubuntu virtual machine   安装成功后,可看的如下信息: ...

  2. DataGridView绑定数据库,取得的数据插入到DataGridView指定列(一)

    实现: 点击button1,从数据库中获得数据,指定数据库的某列数据插入到DataGridView指定列 一.双击button1进入事件代码 private void button1_Click(ob ...

  3. 一步步学习JSON

    什么是Json json是JavaScript Object Notation(javascript对象表示法)的缩写,是一种轻量的数据格式,是基于javascript的一个子集.与XML一样,jso ...

  4. HDU 1693 二进制表示的简单插头dp

    题目大意: 找到多条回路覆盖所有非障碍格子,问这样回路的种数 这里的插头与URAL1519 不一样的是 只要管它是否存在即可,只需要1个二进制位表示状态 #include <cstdio> ...

  5. 新浪微博数据抓取(java实现)

    多了不说,直接贴出相关部分的实现代码 加密部分实现: package token.exe; import java.math.BigInteger; import java.util.Random; ...

  6. sql遍历树

    oracle有直接的sql来遍历一颗树的子节点和父节点 遍历一个节点的所有子节点(classid的值就是该节点的值) select *  from organization_ a start with ...

  7. linux之开发板与宿主机-GDB远程调试

    平台: redhat9.0 下载 gdb-5.3.tar.gz 解压 gdb-5.3.tar.gz: #tar vzxf gdb-5.3.tar.gz 配置文件# ./configure - targ ...

  8. WEB-INF& 绝对路径vs相对路径

    在struts2里面用XXXInput方法和springmvc里面用GET模式进入添加或者登陆输入页面,有时候会在方法里面做一下准备,比如动态读入部门信息放在select中,或者在model中加入一个 ...

  9. 虚拟机centos配置ip

    涉及到三个配置文件,分别是: /etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/resolv.conf /et ...

  10. poj2777 线段树

    //Accepted 4768 KB 391 ms //线段树,延时标记的应用 //对于每一段,用一个int表示被着色的情况,change标记该段的颜色是否发生整体的改变,即这一段 //用没用被全部涂 ...