ES6 - 对象
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 - 对象的更多相关文章
- ES6 对象解构
ES6 对象解构 第一眼看到,什么鬼? const { body } = document `` 其实等于: const body = document.body ``` http://es6.rua ...
- ES6对象扩展
前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象 ...
- ES6对象及ES6对象简单拓展
ES6对象和传统的JS比较起来支持简写,比如说属性简写方法简写,还支持name属性,可以通过他迅速得到函数属性名表达式(如果是用bind方法创造的函数name属性会返回bound加上原函数的名字,Fu ...
- es6对象字面量增强
相对于ES5,ES6的对象字面量得到了很大程度的增强.这些改进我们可以输入更少的代码同时语法更易于理解.那就一起来看看对象增强的功能.对象字面量简写(Object Literal Shorthand) ...
- es6对象的扩展
对象(object)是 JavaScript 最重要的数据结构之一. object 在es6中新增了很多便利的方法 在es6中允许直接写入变量和方法的名称直接作为对象的属性 let x =1 ,y=2 ...
- ES5和ES6对象导出和导入(转载,待整理)
1.import ... form...替代 require() //不接收对象 require:require('s.css'); //(es5) improt 's.css' //(es6) // ...
- es6对象内函数的两种写法
es6对象内函数一般有两种写法: var person1 = { name: "p1", sayThis() { console.log(this); } }; var perso ...
- es6 对象浅拷贝的2种方法
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- ES6(对象扩展)
ES6(对象(object)新增特性) 1.简介表示法 o,k 为属性:这种为无方法的情况. 这种为有方法. 2.属性表达式 ES6中,[a]就是 b . 3.新增API 1.数组也是引用类型 2.O ...
- ES6 对象拓展方法
一,ES6 对象拓展方法 ES6为对象提供了一些拓展方法,下面列举几个比较常见的对象拓展方法.
随机推荐
- c# MVC在WEB.Config中配置MIME
在IIS中,默认没有添加.json格式的MIME,所有无法读取服务器中的.json格式的文件,返回结果404 方式一:在IIS中手动添加MIME 1.点击MIME进入MIME列表 2.添加MIME 3 ...
- js字符转换成整型 parseInt()函数规程Number()函数
今天在做一个js加法的时候,忘记将字符转换成整型,导致将加号认为是连接符, 在运算前要先对字符井行类型转换,使用parseInt()函数 使用Number()将字符转换成int型效果更好
- Spark运行环境的安装
scala-2.9.3:一种编程语言,下载地址:http://www.scala-lang.org/download/ spark-1.4.0:必须是编译好的Spark,如果下载的是Source ...
- JS编码,解码. asp.net(C#)对应解码,编码
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@ ...
- 租房时代,K2 BPM软件带你拥抱更好生活
提到租房子,你的第一反应肯定就是心酸的找房路,奇葩的极品房东……但租房对于年轻人来说又是生存路上必须面对的挑战.现在有一家公司想给你一段租房时代的美好回忆,它就是优客逸家. 优客逸家,隶属于四川优客投 ...
- NIO基础
通道和缓冲区 概述 通道 和 缓冲区 是 NIO 中的核心对象,几乎在每一个 I/O 操作中都要使用它们. 通道是对原 I/O 包中的流的模拟.到任何目的地(或来自任何地方)的所有数据都必须通过一个 ...
- Android ScrollView与ViewPager滑动冲突
前段时间做项目碰到在ScrollView里添加ViewPager,但是发现ViewPager的左右滑动和ScrollView的滑动冲突了,解决这个问题的方法是重写ScrollView. 代码: pub ...
- gsoap框架下的onvif程序流程分析
SOAP_FMAC5 int SOAP_FMAC6 soap_serve(struct soap *soap) { do { unsigned int k = soap->max_keep_al ...
- 关于Mapper、Reducer的个人总结(转)
Mapper的处理过程: 1.1. InputFormat 产生 InputSplit,并且调用RecordReader将这些逻辑单元(InputSplit)转化为map task的输入.其中Inpu ...
- Format a Hard Drive in Csharp C#格式化总结
using System; using System.Diagnostics; using System.IO; using System.Linq; using System.Management; ...