zoukankan      html  css  js  c++  java
  • ES6对象的扩展

    对象的扩展

    对象类别

    • 普通对象: 拥有JS对象所有默认的内部行为;
    • 奇异对象: 其内部行为在某些方面别于默认行为;
    • 标准对象: 在ES6中被定义的对象, 如 Date, 标准对象既可以是 普通对象, 也可以是 奇异对象;
    • 内置对象: 脚本开始运行时由JS运行环境提供的对象, 所有的标准对象都是内置对象;

    对象属性初始化器速记法

    对于对象属性名称与其对应的属性值和本地变量重复的情况下可以使用 属性初始化器速记法 简写, 如:

    const jsBook = function(author, year) {
    	return { author, year };	// 属性初始化器速记法
    };
    

    方法简写(concise method)

    可以省略关键字 function, 不多说, 直接看例子:

    const jsBook = {
    	<!-- 方法简写 -->
    	read() {
    		// write hello world
    	}
    };
    

    使用这种方式定义的对象方法名字就是属性名, 而ES5的写法是可以在 function 关键字后指定一个名称做为该方法的名称, 还有一点区别是简写的方法可以使用 super, 非简写的不能。

    需计算属性名

    允许属性名包含在变量中, 如:

    const hash = Math.random().toString(36).slice(2);
    const jsBook = {
    	[hash]: hash	// 在使用计算属性名时无法使用属性初始化器速记法表示对象
    }
    

    Object.assign

    该方法为混入对象属性和方法提供了便利,第一个入参为接收者,其余入参皆为提供者,该方法将会对提供者进行一次浅复制到接收者,入参有序,遇见同名属性后者覆盖前者,遇到访问器属性则会转成数据属性拷贝到接收者上。

    let obj = {};
    let other = {
    	get someAttr() {
    		return 'hello world';
    	}
    };
    
    obj = Object.assign(obj, other);
    
    let desc = Object.getOwnPropertyDescriptor(obj, 'someAttr');
    console.log('get' in desc);		// false
    

    重复的对象字面量属性

    ES5的严格模式下会禁止对象使用重复属性名,遇见重复属性将会抛出错误。ES6废除了该检查,重复属性名后者覆盖前者。

  • 相关阅读:
    MEAN: AngularJS + NodeJS的REST API开发教程
    什么是MEAN全堆栈javascript开发框架
    fputcsv 导出excel,解决内存、性能、乱码、科学计数法问题
    React 高德地图画点画区域放大缩小
    React 拖动布局
    React+TypeScript搭建项目
    js 运算符优先级
    for...in 与 for...of
    前端面试点记录
    Vue 高德地图 路径规划 画点
  • 原文地址:https://www.cnblogs.com/idiv/p/8406374.html
Copyright © 2011-2022 走看看