美文网首页
ES6-对象的扩展

ES6-对象的扩展

作者: 吴高亮 | 来源:发表于2019-01-02 22:35 被阅读0次

对象是object是js最重要的数据解构;

1:属性的简洁表示方法;

const foo='bar';
const baz={foo};
baz//{foo:'bar'};
//等同于
const baz={foo:foo};

上面代码中;ES6允许在对象中,直接写变量;
其中有方法的简写以及变量的简写

let birth = '2000/01/01';

const Person = {

  name: '张三',

  //等同于birth: birth
  birth,

  // 等同于hello: function ()...
  hello() { console.log('我的名字是', this.name); }

};
let ms = {};

function getItem (key) {
  return key in ms ? ms[key] : null;
}

function setItem (key, value) {
  ms[key] = value;
}

function clear () {
  ms = {};
}

module.exports = { getItem, setItem, clear };
// 等同于
module.exports = {
  getItem: getItem,
  setItem: setItem,
  clear: clear
};

属性的赋值器setter和取词器getter;

可枚举性 §

对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。

let obj = { foo: 123 };
Object.getOwnPropertyDescriptor(obj, 'foo')
//  {
//    value: 123,
//    writable: true,
//    enumerable: true,
//    configurable: true
//  }

描述对象的enumerable属性,称为”可枚举性“,如果该属性为false,就表示某些操作会忽略当前属性。

目前,有四个操作会忽略enumerable为false的属性。

for...in循环:只遍历对象自身的和继承的可枚举的属性。
Object.keys():返回对象自身的所有可枚举的属性的键名。
JSON.stringify():只串行化对象自身的可枚举的属性。
Object.assign(): 忽略enumerable为false的属性,只拷贝对象自身的可枚举的属性。
这四个操作之中,前三个是 ES5 就有的,最后一个Object.assign()是 ES6 新增的。其中,只有for...in会返回继承的属性,其他三个方法都会忽略继承的属性,只处理对象自身的属性。实际上,引入“可枚举”(enumerable)这个概念的最初目的,就是让某些属性可以规避掉for...in操作,不然所有内部属性和方法都会被遍历到。比如,对象原型的toString方法,以及数组的length属性,就通过“可枚举性”,从而避免被for...in遍历到。

相关文章

  • es6-对象扩展

    函数新增特性 简洁表示法 属性表达式 扩展运算符 Object新增方法 简介表示法 属性简写 方法简写 属性表达式...

  • ES6-对象的扩展

    对象的传统表示法 我们回顾一下,对象的传统表示法: 上面的案例很简单,变量person就是一个对象,对象含有nam...

  • ES6-对象的扩展

    对象是object是js最重要的数据解构; 1:属性的简洁表示方法; 上面代码中;ES6允许在对象中,直接写变量;...

  • ES6-对象字面量的扩展

  • ES6-对象字面量语法扩展

    对象字面量(Object Literals)是js中创建对象的一种方法,在ES6中通过如下语法,让对象字面量变得更...

  • ES6-扩展运算符、set、对象方法扩展

    数组合并 数组克隆 将伪数组转化为真正的数组 set set添加 add删除 delete清空 clear 数组...

  • 前端学习之ES6-对象的扩展笔记

    属性的简洁表示法 var birth = '2000/01/01'; ps: CommonJS API定义很多普通...

  • 2019-01-24

    ES6-之 filter

  • ES6-函数的扩展

    函数的参数默认值 使用参数默认值时,函数不能有同名参数。在函数体内,不能使用let/const再声明与参数同名的变...

  • es6-数值的扩展

    1.Number.isFinite()和Number.isNaN() Number.isFinite()用来检查一...

网友评论

      本文标题:ES6-对象的扩展

      本文链接:https://www.haomeiwen.com/subject/rqttrqtx.html