1.简洁表达法. 当属性名与属性值相同时,可省略属性值:例如:{name : name}可以写成 {name} 属性方法中,可省略冒号与function,直接 属性名(){}即可.例如{say : function(arr){}}可以写成{say(arr){}} es5的写法: //es5: const getUserInfo = (id = 1) => { //ajax ... const name = 'xiaoming'; const age = 10; return{ name: nam…
ES6不仅为字符串.数值和数组带来了扩展,也为对象带来了很多新特性.这一节,我们来一起学习一下对象的扩展. 对象的传统表示法 我们回顾一下,对象的传统表示法: let person = { "name":"张三", "say":function(){ alert("你好吗?"); } } 上面的案例很简单,变量person就是一个对象,对象含有name属性和一个say方法.表示法是用键值对的形式来表示,这就是传统的表示法. E…
1.直接用标识符作为属性名: obj.foo = true 2.用表达式作为属性名: obj['a'+'bc'] = 123 //相当于 obj['abc'] = 123 3.ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内. let key = 'foo'; let obj = { [key]: true, ['a'+'bc']: 123 }; var lastWord = 'last word'; var a = { 'first word': 'he…
1.对象类别 普通对象:具有JavaScript对象的所有默认内部行为 特异对象: 具有某些与默认行为不符的内部行为 标准对象: ECMAScript 6 规范中新定义的对象,例如Array,Date等,既可以是普通对象,也可以是特异对象 内建对象: 脚本开始执行时存在于JavaScript执行环境中的对象,所有标准对象都是内建对象 2.对象字面量语法扩展 (1)属性初始化的简写 上述函数返回了一个对象,有name和age属性,但是age和name分别写了两遍 ES6 中,使用属性初始化的简写语…
代码如下: 问题: 为什么我可以这样给obj1对象添加动态属性? 为什么我最终的结果是只添加了right属性? 解答: 1. 第一个问题解答如下: 我们知道在es5中给对象添加属性有两种方法,一种是通过点语法添加(主要是添加静态属性),一种是通过[]添加(主要是添加动态属性) 语法如下: 在es6中新增了属性名变量表达式 语法如下: 2. 第二个问题解答如下: 我们可以把['left', 'right'][+(num>10)]看成一个表达式,['left', 'right']是一个数组,+(nu…
1.Object.is() es5比较两个值是否相等,只有两个运算符,相等(==) 和 严格相等(===),他们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0 等于 -0.es6提出了Object.is()方法,它用来比较两个值是否相等,与严格运算符(===)的行为基本一致 Object.is('foo', 'foo')  //false  Object.is({} , {}) //false 不同之处只有两个, Object.is(+0, -0) // true  Obje…
1.Object.is() 判断俩个值是否相等 +0 不等于 -0 NaN 等于自身 console.log(Object.is('foo','foo')); // true console.log(Object.is({},{})); // false console.log(Object.is(+0,-0)); // false console.log(Object.is(NaN,NaN)); // true 2.Object.assign() Object.assign(target, s…
1.属性的简洁表示法 2.属性名表达式 表达式作为对象的属性名 3.方法的 name 属性 例如:函数的name 属性,返回函数名. 4.Object.is() ES 比较两个值是否相等,只有两个运算符,相等运算符,相等运算符(==) 和严格相等运算符(===) 5.Object.assign() Object.assign 方法用于对象的合并,将源对象的所有的可枚举属性,赋值到目标对象 例如; 6.属性的可枚举行和遍历 可枚举性 描述对象的enumerable 属性,称为“可枚举属性” 如果该…
这几天抽空学习了es6语法,关于字符串,数值,数组,函数以及对象的扩展,看到es6标准入门这本书,里面讲的扩展特别多,我认为有几部分在项目上用不到,就挑有用的当笔记学习了. 字符串的扩展 str.includes(str1, n) 返回布尔值,表示是否找到了参数字符串 params: 第一个参数str1 必选, 要匹配的字符   第二个参数n 可选 表示开始搜索的索引位置 第n个开始搜索到结束 let str = 'hello world' let str1 = 'hello' console.…
对象(object)是 JavaScript 最重要的数据结构之一. object 在es6中新增了很多便利的方法 在es6中允许直接写入变量和方法的名称直接作为对象的属性 let x =1 ,y=2 const obj ={x,y} console.log(obj) //{x: 1, y: 2} 这种写法等同于 let x = 1,y = 2 const obj = { 'x':x, 'y':y } 方法同理 const obj2 = { methods() { return { x, y }…