ES6知识点整理Object方法扩展的应用

ES6—数组方法的扩展 一、概述 ES6提供了很多高效的数组方法,详解如下所示。 二、详解 方法1:filter方法 filter方法不会改变原数组。 filter方法的作用是过滤目标数组,遍历数组的所有元素,并返回一个新数组,该数组包含所有符合筛选条件的数组元素,如果没有符合条件的数组元素则返回空数组。注意,filter方法不会检测空数组。 filter方法的语法如下所示。 array.filter((currentValue, index, arr) => { }, thisValue) filte 阅读详情

在ES6中针对对象的方法做了一些扩展和优化,下面简单总结下常用的方法

is方法判断两个对象是否全等

console.log(Object.is({},{}), {} === {}); // false, false
console.log(Object.is(NaN,NaN), NaN === NaN); // true, false
console.log(Object.is(+0,-0), +0 === -0); // false, true

assign方法用于对象属性的拷贝

如果两个参数,把第二个参数中可枚举的属性拷贝到第一个参数对象中, 仅限于可枚举的属性,如果有多个参数,那么同样拷贝

var obj = {};
var obj2 = Object.assign(obj,{name:'Joh'},{age:10});

console.log(obj === obj2, obj); // true, {name:'Joh', age:10}
console.log(Object.is(obj,obj2)); // true

相同属性的覆盖拷贝

const DEFAULT_OPTIONS = {
  name:"Joh"
};
function test(opts) {
  let options = Object.assign({}, DEFAULT_OPTIONS, opts);
  console.log(options);
}
test(); // {name: "Joh"}
test({name:"Lily",age:10}); // {name: "Lily", age: 10}

Symbol属性同样拷贝

var skey1 = Symbol('test');
var skey2 = Symbol('test');
var obj = {};
Object.assign(obj,{name:'Joh'},{age:10},{[skey1]: 'I am test1'},{[skey2]: 'I am test2'}); // 拷贝
// 验证Symbol的拷贝成功
console.log(obj[skey1]); // I am test
console.log(obj); // {name: "Joh", age: 10, Symbol(test): "I am test1", Symbol(test): "I am test2"}

Object方法:keys,getOwnPropertyNames, getOwnPropertySymbols,getOwnPropertyDescriptor的应用

class A {
  constructor() {
    this.name = 'Joh';
  }

  [Symbol('fullnameA')] () {

  }
  getName() {

  }
}
class B extends A {
  constructor() {
    super();
    this.age = 22;
  }

  [Symbol('fullnameB')] () {

  }
  getAge() {

  }
}

B.prototype.getColor = function () {};

var b = new B();
// 备注:只能获取【自身可枚举属性】,但得不到【原型链上的属性(比如方法) + Symbols属性】
console.log(Object.keys(b)); // ["name", "age"] 

// 备注:可获取【可枚举属性】,但得不到【原型链上的属性 + Symbols属性】
console.log(Object.getOwnPropertyNames(b)); // ["name", "age"] 

// 使用keys怎么也得不到原型链上不可枚举的属性[通过语法糖创建的方法]
console.log(Object.keys(B.prototype)); // ["getColor"]
// 使用 getOwnPropertyNames 传入prototype 可以得到原型链上的属性
console.log(Object.getOwnPropertyNames(B.prototype)); // ["constructor", "getColor", "getAge"]

// 通过getOwnPropertySymbols可以得到自身Symbols属性,但得不到继承的Symbol属性
console.log(Object.getOwnPropertySymbols(B.prototype)); // [Symbol(fullnameB)]

// 获取自身可枚举属性包括继承过来的,备注:通过class内部的语法糖创建的方法是不可枚举的,但是通过后期B.prototype.出来的是可枚举的
for(let key in b) {
  console.log(key); // 依次输出 name 和 age 和 getColor
}

// 描述对象 测试可枚举性
console.log(Object.getOwnPropertyDescriptor(B.prototype,'getColor'));
console.log(Object.getOwnPropertyDescriptor(B.prototype,'getColor').enumerable); // true
console.log(Object.getOwnPropertyDescriptor(B.prototype,'getAge').enumerable); // false

ES6 ~ ES11整理 持续学习中。。。。。 ES 全称 EcmaScript,是脚本语言的规范,而平时经常编写的 JavaScript,是EcmaScript的一种实现,所以 ES 新特性其实指的就是 JavaScript 的新特性。 一、ESMAScript相关介绍 1.1 什么是ECMA ECMA(European Computer Manufacture Associate)中文名称为欧洲计算机制造协会,这个组织的目标是评估、开发和认可电信和计算机标准。1994年后该组织改名为 Ec... 阅读详情

相关推荐

Synopsys安装教程Ubuntu22.04版本

在Ubuntu22版本上安装Synopsys等系列工具,安装DC,VCS等等

qq_59529218的博客 5731

Object.keys使用整理

一、语法 Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有可枚举属性的字符串数组 二、处理对象,返回可枚举的属性数组 let person = { name: "张三", age: 25, address: "深圳", getName: function() ...

weixin_30897079的博客 1898

2.4G板载PCB IFA天线仿真设计

本文简单介绍下2.4GHz的板载PCB IFA天线的HFSS仿真与设计。

射频问问 (RFASK.NET) 是在"微波射频网(MWRF.NET)”系列原创技术专栏基础上升级打造的技术问答学习平台。 6016

Object.assign()解释整理

语法Object.assign(target, ...sources)参数target目标对象。sources源对象。返回值目标对象。描述如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性。Object.assign 方法只会拷贝源对象自身的并且可枚举的属性到目标对象。该方法使用源对象的[[Get]]和目标对象的[[Set]],所以它会调用相关 get

wang252949的博客 1万+

MicroPython跨平台移植实战:从源码解析到STM32+FreeRTOS部署

本文详细解析了MicroPython的跨平台移植实战,重点介绍了如何将其从源码开始,成功部署到STM32微控制器并运行于FreeRTOS实时操作系统。内容涵盖源码结构解析、编译环境搭建、内存管理协调、FreeRTOS任务集成、数学库(math)启用与优化,以及自定义模块开发等核心步骤,为开发者提供了一套完整的、可操作的嵌入式Python移植方案。

vodka的博客 1014

4.1 AI Agent对比分析:Coze、Dify、LangGraph,如何选择Agent框架

本文对比分析了三大主流AI Agent框架:Coze(字节跳动平台,可视化开发,适合快速企业应用)、Dify(开源企业级方案,支持定制部署)和LangGraph(代码开发灵活,适合复杂需求)。选择指南建议:需要快速开发选Coze,需开源定制选Dify,复杂灵活需求选LangGraph。核心要点包括理解各框架特点、根据需求评估选择,并提供了实践建议。下节将介绍Coze平台的实战应用。

yonggeit的博客 3150

<转>javascript之Object.assign()痛点

最近也一直会用JavaScript,然后中间使用的一些组件,如Echarts 会有非常复杂的配置文件,而大部分配置可能都是一样的,所以想着写一份通用配置,然后,其他地方需要使用的时候,用这份配置深拷贝一份配置,然后在上面继续改。就如下: const defaultOpt = { key1: xxx, key2: { dd: ee }, .....

yanhan1021的博客 1130

基于STM32设计的电能质量控制系统_353

本项目基于STM32F103RCT6微控制器设计了一套电能质量控制系统,实现了对火焰、烟雾、环境温湿度、电压、电流及功率等多项参数的实时监测与报警。系统通过MQ2烟雾传感器、火焰传感器、SHT30温湿度传感器及电力参数采集模块采集数据,采用高电平触发有源蜂鸣器进行异常报警。采集的数据通过ESP8266无线模块以AP+TCP模式上传至基于Qt开发的手机APP和电脑上位机,实现远程实时监控和历史数据管理。系统配备1.44寸LCD显示屏,实现本地数据显示。软件采用Keil5开发,采用寄存器编程方式,提高系统响应速

255

ES6,新增语法整理之数值的扩展

确切地说,JS 中的Number类型只能安全地表示-9007199254740991 (-(2^53-1)) 和9007199254740991(2^53-1)之间的整数,任何超出此范围的整数值都可能失去精度。它们与传统的全局方法isFinite()和isNaN()的区别在于,传统方法先调用Number()将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效。ES2020 引入了一种新的数据类型 BigInt(大整数),BigInt 只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。

m0_37749760的博客 1761

SQL的基本介绍

1.什么是数据库?2.什么是数据库管理系统?3.什么是 SQL?1.数据库是保存有组织的数据的容器,通常是一个文件或一组文件,可以将其看作电子化的文件柜。用户可以对文件中的数据执行新增、删除、更新、查询等操作。2.数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户可以通过 DBMS 访问数据库中的数据,数据库管理员也可以通过 DBMS 进行数据库的维护工作。

shiwei0813的博客 2879

【Ranger】mac下Apache Ranger编译安装

a、编译过程中出现测试用例不通过和文件认证错误错误:带上参数-DskipTests=true -Drat.skip=true 重新编译;b、若编译过程中出现缺少jar包的情况,可能下载不了,需要手动自动添加;c、编译所需的其他工具如maven等安装配置略。采用这个会报错,因此我才用了下面一个命令。初始化设置Ranger Admin:执行。然后进入target目录。

九师兄 2108

es6知识点整理

声明 变量的解构赋值 字符串的扩展 正则的扩展 数组的扩展 声明 let 块级作用域,for 循环中设置循环变量的是一个父作用域,循环体内部是一个单独的子作用域。 for(let i = 0; i < 3; i++) { let i = '123'; console.log(i); } // 123 // 123 // 123 不存在变量提升:let声明的变量一...

千鱼鱼的日常 367

博途PLC如何建立与笔记本电脑端的连接?(新手必会)

对S7-1500PLC下载硬件组态或程序,需要建立PC与PLC的连接。 由于S7-1500CPU都具有PN端口,因此建立PC与S7-1500PLC的连接通常使用工业以太网来实现。 1.使用网线连接PC-PLC 使用网线,一端连接PC的以太网卡端口,另一端连接S7-1500CPU的PN端口。 2.设置本机IP地址 2.1 确认本机要设置的IP地址段 本机IP地址要和PLC程序组态IP地址段前三位保持一致,后一位使用组态中没有用到的IP地址段。如下图所示。 那么看了这个图片应该就知道了,地址应该设置成192.

weixin_42430971的博客 1万+

学习Vue2需要知道的Es6知识点

先掌握核心知识点(1-7项),完成 1-2 个 Vue 项目后,再逐步学习进阶特性。Vue2 项目中 90% 的 ES6 使用场景集中在模块系统、箭头函数、解构赋值和 Promise 这几项核心功能上。

weixin_48053866的博客 940

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JS进阶知识、ES6基础知识整理

JS进阶知识、ES6基础知识整理一、JS面向对象面向过程编程POP(了解)面向对象编程OOP(了解)面向对象的特性面向过程和面向对象的对比二、ES6中的类和对象对象类 class创建类类添加方法三、类的继承继承super关键字三级目录四、面向对象案例案例:面向对象版tab栏切换三级目录五、构造函数和原型构造函数构造函数存在的问题构造函数的原型prototype对象原型_proto_constructor 构造函数构造函数、实例、原型对象三者之间的关系原型链JS的成员查找机制(规则)原型对象的this指向扩展

tuzi007a的博客 5806

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ES6 知识点整理

ES6核心知识点摘要 变量声明:let/const具有块级作用域和暂时性死区,const声明常量时引用类型属性可修改。 箭头函数:继承外层this,不可作构造函数,无arguments对象。 模板字符串:反引号支持多行文本和变量嵌入(${x})。 解构赋值:从数组/对象快速提取值,简化数据操作。 异步处理:Promise管理异步状态,async/await以同步写法处理异步。 数据结构:Set自动去重,Map支持任意类型键。 Class与模块化:类语法糖实现继承,import/export拆分代码模块。 高

黄同学的博客 1482

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Elasticsearch知识点整理

Zen Discovery 是ES的内置默认发现模块,发现模块的职责是发现集群中的节点以及选举Master节点,提供单播和基于文件的发现,并且可以或者为通过插件支持云环境和其他形式的发现。将非结构化数据的一部分信息提取出来,重新组织,使其变得有一定的结构然后对这种数据进行搜索,从而达到搜索相对较快的目的,这种方式就构成了全文检索的基本思路,这部分从非结构化数据中提取出的然后重新组织的信息,我们称之为索引。这种由属性值来确定记录的未知的结构就是倒排索引,带有倒排索引的文件我们称为倒排文件。

Chen_leilei的博客 1606

ES6 数组方法归纳整理

ES6 操作数组方法 1.判断是否为数组 let arr = [1,2,3] console.log( Array.isArray(arr) )// true console.log( Array.isArray([]) ) //true 2.创建数组 new Array() 创建数组 如果使用Array构造函数传入一个数值型的值,那么数组的长度length属性会被设置为该值; let items = new Array(2); console.log(items.length); // 2

weixin_41801013的博客 1822

ES6面试题整理汇总

ES6面试题整理汇总

山雀的博客 8450

ES6面试、复习干货知识点汇总(全)

近期在复习ES6,针对ES6新的知识点,以问答形式整理一个全面知识和问题汇总。(全干货,适合对ES6有一定理解的同学复习,以及ES6面试。) 一、问:ES6是什么,为什么要学习它,不学习ES6会怎么样? 答: ES6是新一代的JS语言标准,对分JS语言核心内容做了升级优化,规范了JS使用标准,新增了JS原生方法,使得JS使用更加规范,更加优雅,更适合大型应用的开发。学习ES6是成为...

前端码农 2941

22个关于ES6的最新面试题汇总整理

作者:StevenLikeWatermelonhttps://juejin.cn/post/6844903734464495623近期在复习ES6,针对ES6新的知识点,以问答形式整理一...

前端达人 8632

ES6知识点整理之----对象扩展

属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 function f(x, y) { return {x, y}; } // 等同于 function f(x, y) { return {x: x, y: y}; } f(1, 2) // Object {x: 1, y: 2} 除了属性简写,方...

ap1005233的博客 185

ES6知识点整理

ES6-ES11

VCDA的博客 401

ES6,新增语法整理之函数的扩展

变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。setTimeout()如果是普通函数,this将指向window,箭头函数导致this总是指向函数定义生效时所在的对象(本例是{name: ‘张三’}),所以打印出来的是。由于箭头函数没有自己的this,所以当然也就不能用call()、apply()、bind()这些方法去改变this的指向。在 ES6 之前,不能为函数的参数指定默认值,通常采用如下方法实现。

m0_37749760的博客 1048

整理学习——ES6对象的扩展

文章目录简洁表示法注意事项属性名表达式定义对象的属性的方法方法的name属性 简洁表示法 属性简写。在对象之中,直接写变量,属性名为变量名, 属性值为变量的值。var foo = "bar"; var baz = {foo}; console.log(baz); //Output: {foo: "bar"} //相当于 var baz = {foo: foo}; 方法简写var o = {...

shaliwang的博客 256
上一篇: ES6知识点整理Object属性新的写法
下一篇: ES6知识点整理String字符串新增常用方法
Wang's Blog
博客等级 码龄12年 7438粉丝 2422原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值