摘要: 概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Sym 阅读全文
posted @ 2019-02-25 18:10 刘欢乐 阅读(17237) 评论(0) 推荐(2) 编辑
摘要: Object.fromEntries() Object.fromEntries()方法是Object.entries()的逆操作,用于将一个键值对数组转为对象。 该方法的主要目的,是将键值对的数据结构还原为对象,因此特别适合将 Map 结构转为对象。 该方法的一个用处是配合URLSearchPara 阅读全文
posted @ 2019-02-25 17:38 刘欢乐 阅读(1421) 评论(0) 推荐(0) 编辑
摘要: Object.keys(),Object.values(),Object.entries() Object.keys() ES5 引入了Object.keys方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。 ES2017 引入了跟Object.ke 阅读全文
posted @ 2019-02-25 17:37 刘欢乐 阅读(328) 评论(0) 推荐(0) 编辑
摘要: Object.getOwnPropertyDescriptors() ES5 的Object.getOwnPropertyDescriptor()方法会返回某个对象属性的描述对象(descriptor)。ES2017 引入了Object.getOwnPropertyDescriptors()方法,返 阅读全文
posted @ 2019-02-25 17:31 刘欢乐 阅读(1157) 评论(0) 推荐(0) 编辑
摘要: Object.assign() 基本用法 Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。 Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。 注意,如果目标对象与源对象有同名属性,或多个源对象有同名属 阅读全文
posted @ 2019-02-25 17:08 刘欢乐 阅读(194) 评论(0) 推荐(0) 编辑
摘要: Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符( )。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。 ES6 提出“Same 阅读全文
posted @ 2019-02-25 14:53 刘欢乐 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 对象的扩展运算符 扩展运算符(...)。ES2018 将这个运算符引入了对象。 解构赋值 对象的解构赋值用于从一个对象取值,相当于将目标对象自身的所有可遍历的(enumerable)、但尚未被读取的属性,分配到指定的对象上面。所有的键和它们的值,都会拷贝到新对象上面。 上面代码中,变量z是解构赋值所 阅读全文
posted @ 2019-02-25 14:45 刘欢乐 阅读(446) 评论(0) 推荐(0) 编辑
摘要: super 关键字 我们知道,this关键字总是指向函数所在的当前对象,ES6 又新增了另一个类似的关键字super,指向当前对象的原型对象。 上面代码中,对象obj.find()方法之中,通过super.foo引用了原型对象proto的foo属性。 注意,super关键字表示原型对象时,只能用在对 阅读全文
posted @ 2019-02-25 11:37 刘欢乐 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。下面是另一个例子。 除了属性简写,方法也可以简写。 下面是一个实际的例子。 这种写法用于函数的返回值,将会非常方便 阅读全文
posted @ 2019-02-25 09:33 刘欢乐 阅读(268) 评论(0) 推荐(0) 编辑