对象的属性

属性表示法

ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法

ES5

let name = "张无忌";
function sayMe() {console.log("this is 张无忌");
}
// ES5定义对象的属性和方法的方式
var obj = {name:name,// 第二个name表示变量名sayMe:sayMe,// //第二个sayMe表示函数名
};
console.log(obj.name); //张无忌

ES6

let name = "张无忌";
function sayMe() {console.log("this is 张无忌");
}
// ES6允许将变量名和函数名直接作为对象的属性和方法的方式
var obj = {name,sayMe,
};
console.log(obj.name); //张无忌

Object的方法

Object.is()的方法

ESt 5比较两个值是否相等,使用的是相等运算符( = = )和全等运算符( = = = )。但这两个运算符在使用时都具有缺点:

  • 相等运算符在比较之前,会自动转换数据类型。
  • 全等运算符导致NaN与自身不等,+0等于-0等问题。

ES6提出了同值相等( Same - value equality )算法来解决以上问题。Objectis() 方法就是对同值相等算法的具体实现。.

// ES5 .
console.log(+0 === -0);// true
console. log(NaN === NaN);// false
// ES6
console. log(Object.is(+0,-0));// false
console. log(Object. is(NaN,NaN)) ;// true
Object.assign()的方法

用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。

Object.assign(target,...sources)

  • target:目标对象。
  • sources:源对象。
  • 返回值:目标对象。
var obj = {name: "张无忌",age: 18,
};var target = {};
let result = Object.assign(target, obj);
console.log(result, target); // { name: '张无忌', age: 18 } { name: '张无忌', age: 18 }target.name = '周芷若'
console.log(obj.name);// 张无忌

Object.assign()方法只会拷贝源对象自身的并且可枚举的属性到目标对象。

super关键字

用于指向当前对象原型对象

function Hero() {this.name = "张无忌";this.sayMe = function () {console.log(this.name);// Hero {}};
}
Hero.prototype.age = 18;
var hero = new Hero();
hero.sayMe();
hero.sayYou = function () {console.log(this.age);
};
hero.sayYou();var prop = {age: 18,
};
var obj = {name: "张无忌",sayMe() {console.log(super.age); // prop.age},
};Object.setPrototypeOf(obj, prop);
obj.sayMe();

super关键字表示原型对象时,只能用在对象的方法之中,用在其他地方都会报错。

对象的扩展运算符

对象的扩展运算符(…)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。

var obj = {name: "张无忌",age: 18,
};
// 将元对象的可枚举的属性复制到目标对象。
var target = { ...obj };
console.log(target); // { name: '张无忌', age: 18 }

[ES6] 细化ES6之 -- 对象的扩展相关推荐

  1. [ES6] 细化ES6之 -- Promise对象

    Promise对象是什么 Promise对象是什么 ES6新增了Prormnise对象,该对象允许对延迟和异步操作流程进行控制.一个Promise对象就是一个代表了异步操作最终完成或者失败的对象. 开 ...

  2. [ES6] 细化ES6之 -- 函数的扩展

    函数参数的默认值 函数参数指定状认值 ES6 之前,不能直接为函数的参数指定默认值,如果定义了形参,不传递实参时导致形参为undefined,只能采用变通的方法. //ES5 function fn( ...

  3. [ES6] 细化ES6之 -- 数组的扩展

    扩展运算符 扩展运算符 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列.允许一个表达式在原地展开 // 定义一个数组 var arr ...

  4. [ES6] 细化ES6之 -- 字符串的扩展

    判断是否包含 都区分大小写 includes()方法 返回布尔值,表示是否找到了参数字符串 let str = 'hebei baodingshi lianchiqu' console.log(str ...

  5. [ES6] 细化ES6之 -- Class关键字

    类的声明 类是什么 类作为对象的模板,只是一个语法糖 class 关键字是让对象原型的写法更加清晰.更像面向对象编程的语法而已. // ES5创建构造函数 function Hero() {this. ...

  6. [ES6] 细化ES6之 -- 迭代器与生成器

    Symbol Symbol是什么 ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值 Symbol 值通过Symbol函数生成 let symbol = Symbol(); consol ...

  7. [ES6] 细化ES6之 -- 变量的解构赋值

    变量的解构赋值 解构赋值是什么 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值 var/let [变量名称1,变量名称2,...] = 数组或对象 本质上,这种写法属于"模式 ...

  8. [ES6] 细化ES6之 -- ECMA6是什么

    ECMA6是什么 JavaScript 语言的下一代标准 ES6 的目标,是使得 JavaScript 语言可以用来编写大型的复杂的应用程序,成为企业级开发语言. ECMAScript 和 JavaS ...

  9. [ES6] 细化ES6之 -- 前端模块化

    前端模块化 前言 前端开发领域发展到目前阶段: 零件化 - 最终呈现给用户是一个完整的产品(由各个零件组成的) 降低生产成本 – 多人协作(每个人各司其职) 降低使用成本 - 各个零件之间是低耦合的 ...

最新文章

  1. 《DBA修炼之道:数据库管理员的第一本书》——1.2节独特的优势
  2. CSS || 三栏布局,两边固定,中间自适应
  3. bash的配置文件定义
  4. quartz-misfire 错失、补偿执行
  5. 数理统计-5.1 总体与样本
  6. Linux 系统下命令 unrar 的英文版使用说明
  7. 【AMAD】django-activity-stream
  8. jQuery hover事件
  9. java quartz SimpleScheduleBuilder
  10. 两分钟学会Android平台NDK编程(无须Eclipse和cygwin,可使用命令行打包多个so)
  11. dell戴尔服务器错误代码及解决方案2013版
  12. Numpy 用 npy/npz 文件保存与载入数据
  13. Meson构建系统(一)
  14. 电磁场与电磁波公式总结
  15. Python调用Matplotlib绘制分布点图
  16. 力扣热门题目简单部分合集(共23道)
  17. 产品经理的战场:需求评审会
  18. 学习必要的理财知识会让你更快的富起来!
  19. 关于证书,这里有你想知道的一切
  20. CC++ 输入十六进制字符转十六进制数

热门文章

  1. MacOS 安装 Telnet
  2. 展望10年内VR技术的盈利模式的发展历程
  3. JavaScript---DOM事件
  4. 小汤学编程之JAVA基础day08——面向对象(三):抽象类与接口
  5. python中range语法
  6. 从Excel读取数据,然后分析相似的数据,多线程处理(多线程比较相似的字符串,统计出相似的数量及字符串)...
  7. 0.接口测试学习路径
  8. 【51nod 1331】狭窄的通道
  9. Linux下安装JDK7和TomCat7
  10. jQuery实现购物车多物品数量的加减+总价计算