ES6-对象
来源:互联网 发布:淘宝最低价插件 编辑:程序博客网 时间:2024/05/21 10:24
ES6学习之对象
学习ES6对象的一些新属性,主要参照ES6标准入门一书。
方法的name属性
对对象中的方法使用==name==属性,会返回方法名。对方法中的==get,set==函数使用name属性,会返回==get/set+方法名==。
var person = { sayName () { console.log(this.name); }, get firstName () { return 'lalalala'; }}person.sayName.name // "sayName"person.firstName.name // "get firstName"
Object.is()
==Object.is==方法和===严格比较运算符具有相同的效果。除了对+0和-0,还有NaN的表现效果不一致。
+0 === -0 // trueNaN === NaN // falseObject.is(+0, -0) // falseObject.is(NaN, NaN) // true
Object.assign()
==Object.assign==方法只是简单的用后面对象的属性,替换前面对象的相应属性,并不具备“深拷贝”的功能。假如有多个对象的时候,后面的对象会一次替换前面对象的属性。替换后的属性,引用相同的引用类型。
该方法有很多用途:
1. 为对象添加属性
class Point { constructor (x, y) { Object.assign(this, {x, y}); }}
- 为对象添加方法
Object.assign(SomeClass.prototype, { someMethod () { ... }, anotherMethod () { ... }});
- 克隆对象
function clone (origin) { let originProto = Object.getPtototypeOf(origin); return Object.assign(Object.create(originProto), origin);}
- 合并多个对象
const merge = (target, ...sources) => Object.assign(target, ...sources);
属性的可枚举性
对象的每个属性都有一个描述对象(Descriptor)。==Object.getOwnPropertyDescriptor==方法可以获取该属性的描述对象。
let obj = { foo: 123};Object.getOwnPropertyDescriptor(obj, 'foo');// { value: 123, //值// writable: true, //是否可写// enumerable: true, //可枚举性// configurable: true //是否可以修改以上属性}
es6中,所有对象的class方法都是不可枚举的。
对象属性的遍历
- for…in返回自身和继承的可枚举属性(不含Symbol)
- Object.keys返回一个数组,包含自身的可枚举(不含继承和Symbol)
- Object.getOwnPropertyNames(obj)返回数组,包含所有属性(不含继承和Symbol,但包含不可枚举)
- Object.getOwnPropertySymbols(obj)返回数组,包含Symbol
- Reflect.ownKeys(obj)返回数组,包含自身所有(含Symbol,含不可枚举)
- Reflect.enumerate(obj)返回一个Iterator对象,其他与fot…in相同
__proto__属性
这个属性没有写入es6正文,标准规定只有浏览器必须部署,其他环境不一定要部署。所有,最好不要使用这一属性,而是使用替代属性如==Object.setPrototypeOf(),Object.getPrototypeOf()或Object.create()==。
0 0
- ES6--对象
- ES6-对象
- ES6--对象
- ES6--对象
- es6 promise对象
- ES6 Promise 对象
- ES6 Promise对象
- ES6-Math对象扩展
- ES6对象的扩展
- ES6 Date对象详解
- ES6 Math对象详解
- ES6 Promise对象学习心得
- ES6中的promise对象
- ES6 对象扩展
- ES6(六) promise对象
- 浅谈ES6 Promise对象
- ES6 Promise 对象理解
- ES6对象扩展
- 362_显示键盘和收起键盘
- 音视频学习
- Windows数据类型的罗列
- 学习Hadoop第二十一课(Hadoop集群测试)
- Problem 4 Largest palindrome product (暴力枚举)
- ES6-对象
- H5_Node3_本地存储&新的JS-API
- 【POJ 2019】2D-RMQ裸题
- ajax 详细参数
- 数据结构之——单链表的增删改查
- try catch会影响性能么
- 363_自定义EditText
- Centos显示-bash-4.1$问题的修复及原因探究
- 求100到200之间的素数