es2015,类,静态方法,继承, Set,Map,Symbol,iterator迭代器

JavaScript Map和Set底层原理与工程选型指南 Map和Set是JavaScript中基于哈希表实现的核心集合类型,区别于Object和Array的本质在于其支持任意类型键、O(1)查找复杂度及严格插入顺序保证。其底层采用SameValueZero相等算法与内存地址哈希机制,使对象作键、NaN判等、高频成员查询等场景具备不可替代性。技术价值体现在性能跃升(如防重复提交、权限校验)、语义精准(键值对语义明确、去重逻辑内建)与内存可控(惰性迭代、WeakMap弱引用)。典型应用场景包括用户行为日志聚合、React异步状态管理、算法题两数之和求解等。本文聚焦m 阅读详情

es2015 中的类
 

class Pro {
  constructor(name){
    this.name=name
  }
  say(){
    console.log(`hi,${this.name}`);
  }
  // 静态方法
  static create(name){
    return new Pro(name)
  }
}
// const p = new Pro("zom")

const p = Pro.create("zom")
p.say()  //hi,zom

 extends (继承), super() 调用父类的方法
 

// 继承
class Student extends Pro{
  constructor(name,number){
    super(name)
    this.number= number
  }

  hello(){
    super.say() //调用 Pro 类的say() 
    console.log(`my number is ${this.number} `);
  }
}
const s = new Student("pink","100")
s.hello()  // hi,pink
           // my number is 100

Set 使用

//Set 使用
const s= new Set();
s.add(1).add(2).add(3).add(4)

console.log(s.size);      // 4  大小
console.log(s.has(5));    // false 查找
console.log(s.delete(4)); // true  删除

// 给数组去重
const arr =[1,2,5,3,4,2,1]
const res = Array.from(new Set(arr))
console.log(res);  //[ 1, 2, 5, 3, 4 ]

Map

//  Map 使用,任意对象作键, key(键),value(值)
const m = new Map()


const tom = {name:"tom"}

m.set(tom,90)
m.set("one","ss")
console.log(m);  //Map(1) { { name: 'tom' } => 90, 'one' => 'ss' }
console.log(m.get(tom)); //90
m.forEach((value,key)=>{
  console.log(key,value);  //{ name: 'tom' } 90  , one ss
})

Symbol
 

// Symbol 使用,Symbol是独一无二的属性名
const s =  Symbol()
console.log(s);         // Symbol()
console.log(typeof s);  // symbol
console.log(s === Symbol()); // false
console.log(Symbol() === Symbol()); //false

console.log(Symbol("tom"));

iterator 迭代器
 

//  iterator 迭代器
const set = new Set(["one","two","three"])
const iterator = set[Symbol.iterator]()
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());

 

JavaScript展开与剩余参数:从ES6语法到现代开发实战 在JavaScript开发中,函数参数处理与数据结构操作是基础且核心的概念。ES6引入的展开语法与剩余参数,正是基于迭代协议和函数式编程思想,为解决这些问题提供了优雅的语法支持。展开语法允许将可迭代对象如数组、Set的元素展开,或将对象的属性展开,实现了数据的'化整为零',常用于函数调用传参、数组合并和对象浅拷贝。剩余参数则扮演'集零为整'的角色,将函数多余的参数收集为数组,或在解构时收集剩余元素,完美替代了传统的arguments对象。这两种语法的技术价值在于极大地提升了代码的简洁性、可读性和不可变性,是 阅读详情

相关推荐

JavaScript核心概念精讲:从变量、函数到异步编程与模块化

在编程语言中,变量、数据类型和函数是构建程序的基础概念。JavaScript作为一门动态类型语言,其变量声明经历了从var到let/const的演进,解决了变量提升等问题,而函数作为一等公民,其作用域、闭包和this绑定机制是理解语言运行原理的关键。这些基础概念直接关系到代码的可维护性和性能,尤其在处理异步操作和构建复杂应用时至关重要。例如,通过掌握闭包可以创建私有变量和实现函数工厂,而理解原型链则能更好地运用面向对象编程。在实际开发中,ES6+引入的Promise和Async/Await极大地优化了异步编

weixin_30527423的博客 325

JavaScript Map和Set:高效键值存储与集合操作的核心原理与工程实践

Map和Set是JavaScript中基于哈希表实现的原生数据结构,分别提供O(1)平均时间复杂度的键值映射与成员存在性判断能力。其核心原理依赖SameValueZero相等算法,支持任意类型键(包括对象、函数、NaN)并严格遵循引用相等语义,显著区别于Object的字符串键限制和Array的线性查找性能瓶颈。技术价值体现在内存安全(如WeakMap防泄漏)、语义清晰(如Set天然去重与集合运算)、迭代友好(原生支持for...of与扩展运算符)及可扩展性强(可继承定制TTL缓存)。典型应用场景涵盖前端缓存

weixin_30675247的博客 309

【5G NB-IoT NTN】3GPP R17 NB-IoT NTN介绍_nbiot ntn

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!” />你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!

2401_83703866的博客 3165

ES2015 class

一、类 class ES2015以前 ECMAScript都是通过定义函数和定义原型对象来实现类 // 比如定义一个Person类 // 先定义一个函数,作为类的构造函数 function Person(name){ this.name = name; } Person.prototype.say = function(){ console.log(`say ${this.name}`) } ES2015以后 新增了class关键词来声明一个类 class Person{ // 如果需要在

路遇惊喜 382

Codex全网避坑实录|境外手机号封禁\+Ollama千问适配失败\+第三方中转站TOML全套配置

原生Codex:国内手机号百分百无法登录,PIN验证、多因子验证全部无效,不用尝试API Key登录:仅解锁界面,不充值无法使用功能,纯过渡方案Ollama本地千问:原生接口和Codex不兼容,手写Python代理大概率调试失败,不推荐折腾网页解析失败:只改wire_api为responses即可解决,无需修改接口地址使用建议:仅体验功能用中转站;长期办公提效,成本很高,建议改用兼容接口的本地模型。

驽马不舍 1896

别再手动更新Excel了!用Jira看板管理你的个人项目(附保姆级配置流程)

本文详细介绍了如何利用Jira看板替代Excel进行个人项目管理,提供从注册到配置的保姆级教程。通过极简看板模式、自动化规则和数据分析功能,帮助用户实现任务可视化、协作高效化和提醒自动化,大幅提升个人工作效率。特别适合需要管理复杂个人项目的用户。

weixin_42699679的博客 229

ES2015 类、静态方法与类的继承

class 类 在此之前,ECMAScript 中都是通过定义函数以及函数的原型对象来实现的类型。如下代码所示: function Person(name) { this.name = name } 如果需要这个类型所有实例之间共享一些成员,可以借助于函数对象的 prototype 来实现。如下代码所示: Person.prototype.say = function () { console.log(`hi, my name is ${this.name}`) } 自从 ECMAScript2

大叔的私享课 304

腾讯云CodeBuddy+微信小程序:5分钟开发番茄小闹钟

番茄钟是一种简单的时间管理方法。这个方法很简单:你专注工作25分钟,然后休息5分钟。这样可以让你更专心,不容易分心,还能防止过度疲劳。 很多人用番茄钟来提高工作效率,因为它能帮助你更好地管理时间。不过,市面上的一些免费番茄钟应用常常会有广告弹出来,影响使用体验。这就是为什么我们要开发一个没有广告的番茄钟小程序,让用户可以专心工作,不被打扰。

2201_75366661的博客 1689

ES2015+学习笔记系列(七)—— Class类

目录class类类定义class静态成员ES5方式实例对象ES6中class静态成员对象继承ES5使用构造函数实现对象继承ES6中class对象继承子类对父类方法的重写class中getter和setter class类 作为对象模板,通过class关键字,可以定义类。 基本上,ES6的class可以看做知识一个语法糖,他的绝大部分功能,ES5都可以做到。 新的class写法只是让对象原型的写法更加清晰、更像面向对象的语法而已。 类定义 构造方法,名字必须为constructor,不可修改 方法必须使

sinat_30491515的博客 738

Android音频输出流实战:从AudioFlinger到HAL层的完整调用链解析

本文深入解析了Android音频输出流的完整调用链,从应用层的AudioTrack和AAudio API,到系统服务AudioFlinger的混音调度,最终抵达硬件抽象层(HAL)。文章结合实战经验,探讨了如何利用底层机制优化音频延迟、处理设备切换,并提供了性能调优与问题排查的具体方法,是开发高性能音频应用的实用指南。

weixin_29208327的博客 252

Ubuntu 22.04远程桌面终极指南:从零配置RDP到解决黑屏问题

本文提供了一份Ubuntu 22.04远程桌面配置的终极指南,详细讲解了如何从零开始安装和配置RDP服务,并重点解决了连接后常见的黑屏问题。通过分析会话冲突、修复启动脚本及配置权限策略,帮助用户实现稳定、高效的远程桌面连接,优化分辨率、禁用锁屏,打造无缝的远程工作体验。

sony5的博客 1382

JavaScript学习之ES6 ES2015学记笔记(十二)-类(Class)

class在很多面向对象编程的语言中已经很成熟 JS目前面临的问题 用JavaScript新建一个circle类:具有如下功能: 在给定的 Canvas 上绘制一个给定圆。 跟踪记录生成圆的总数。 跟踪记录给定圆的半径,以及如何使其值成为圆的不变条件。 计算给定圆的面积 function Circle(radius) { this.radius = radius; C...

Three_ST的博客 393

RK3588在线更新系统内核的方法

《RK3588设备在线升级系统内核方法》 本文介绍了RK3588设备在线升级系统内核的简易方法。通过将新内核文件boot.img拷贝至目标主机后,使用dd命令配合关键参数(fsync确保写入磁盘、notrunc避免截断分区)进行安全更新,更新后需执行sync同步操作并重启生效。文章特别强调操作过程中断电风险,并扩展说明了Uboot的类似更新方法。该方法避免了现场设备拆卸的麻烦,为嵌入式系统维护提供了实用解决方案。

荻夜的博客 1047

解析ES2015中的Class关键字和构造方法

首先,我们直接来看下面的示例代码: var Component = function () { console.log(this); }; Component(); var compoent = new Component(); 上面代码中的Component()和new Component()都是调用函数Component,但是它们在浏览器环境下的执行结果却完全不同: Window ...

www.wuxianjie.net 596

电磁兼容(EMC):一文读懂过电应力(EOS)

过电应力(EOS)是指元器件承受的电流或电压应力超过其允许的最大范围。产品的电磁兼容(EMC)失效的一种常见模型为过电应力(EOS),也是电子产品失效的最常见的情况之一。过电应力基本与半导体器件相关,EOS事件包括有:静电放电(ESD)、雷击、系统瞬态、电磁脉冲、充电等。本文将详细讨论一下产品设计中如何关注EOS设计。

linkking27的博客 6485

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【JavaScript】ES6 新特性

ES6(ECMAScript 6)是 JavaScript 的第六个版本,也称为 ES2015,引⼊了很多新特性来增强 JavaScript 语⾔的能⼒。let 和 const 声明变量,解决了使⽤ var 时出现的⼀些不合理的问题,如变量提升、重复声明等。模板字符串解构赋值,数组、对象、字符串以及函数参数等都可以进⾏解构赋值。箭头函数Promise 对象Promise 是⼀种异步编程的解决⽅案,⽐回调函数更加强⼤。与 Promise 相关的还有 Generator 和 async。

小秀的博客 733

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JS随笔:ES6+特性与模块化实践

展开运算符用于在“期望一串元素或键值对”的地方铺开数组或对象, 是构建新数组/对象和实现浅拷贝的利器;解构赋值则提供了从复杂结构中按模式提取字段的语法糖, 大幅减少中间变量与重复访问。插值语法,将字符串拼接与表达式求值结合起来, 非常适合用于构建多行文本、日志、SQL/GraphQL 片段等结构化内容。这非常适合作为库或框架内部的扩展点键名,避免与业务代码在对象属性上踩踏。两个版本迭代,其中 3.0 在业界广泛支持,奠定了语言基本语法。)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为。

2401_86373285的博客 476

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Map和Set:JavaScript数据建模的底层基础设施

Map和Set是JavaScript中提供O(1)平均时间复杂度键值映射与唯一值集合的核心原生类型,其底层基于SameValueZero相等算法与哈希表实现,解决了Object强制字符串键、Array去重与查找为O(n)等根本性限制。相比Object/Array,它们支持任意类型键值、严格插入顺序、无原型污染,显著提升缓存管理、权限校验、实时协作等场景的性能与语义准确性。尤其在千级数据规模以上,Map.has()与Set.has()可带来百倍级响应优化,是现代前端工程中不可替代的数据契约基础。

531

Map和Set不是语法糖:JavaScript底层数据结构升级解析

Map和Set是JavaScript中区别于Object和Array的基础数据结构,其核心在于原生支持任意类型键(包括对象、函数、NaN)、严格插入顺序迭代、O(1)平均时间复杂度的成员判定与哈希查找。它们并非语法糖,而是V8引擎深度优化的专用容器,解决了Object强制字符串键导致的语义丢失、遍历不可预测、内存泄漏风险等根本问题。在缓存、响应式系统、LRU策略、事件总线及私有状态封装等工程场景中,Map和Set提供了不可替代的性能保障与语义正确性,是构建高性能、可维护前端架构的关键底层能力。

weixin_30598225的博客 619

前端面试题汇总---JavaScript篇(2)

## 1、ES5、ES6和ES2015有什么区别? > `ES2015`特指在`2015`年发布的新一代`JS`语言标准,`ES6`泛指下一代JS语言标准,包含`ES2015`、`ES2016`、`ES2017`、`ES2018`等。现阶段在绝大部分场景下,`ES2015`默认等同`ES6`。`ES5`泛指上一代语言标准。`ES2015`可以理解为`ES5`和`ES6`的时间分界线 ...

weixin_42246997的博客 313

JavaScript解构、Rest参数与展开语法的原理与避坑指南

解构赋值、剩余参数(Rest)和展开语法(Spread)是现代JavaScript处理数据结构的核心机制,其底层统一基于可迭代协议(Iterable Protocol),本质是对数据容器的模式匹配与结构化操作。它们并非简单语法糖,而是支撑函数式编程、不可变更新、参数灵活传递等工程实践的关键能力。理解其运行时行为(如解构在null/undefined时抛出TypeError、Rest参数创建新数组的内存开销、展开仅做浅拷贝等),对避免线上崩溃、内存溢出和状态污染至关重要。本文聚焦真实业务场景——API响应安全

weixin_34159110的博客 519

ES2015(ES6)+

JES2015-ES6目录名词释义ECMAScriptES2015ES6let 和 const箭头函数函数的参数默认值用法示例模板字符串扩展(展开) 运算符解构赋值对象解构赋值数组的解构赋值应用-解构赋值结合函数声明对象成员的简写概述Symbol作为对象属性Symbol.for内置SymbolSymbol的属性Set和WeakSetSet实例WeakSetMap和WeakMapMap实例1:扩展对象实例2:完善私有属性的实现WeakMap实例:完善私有属性的实现ProxyReflect 反射Iterator

weixin_46873254的博客 1905

解析ES2015中的静态方法

我们知道Java中存在静态方法,并且我们可以通过类名.静态方法名()的方式,当然也可以通过实例对象名.静态方法名()进行调用(不推荐)。因为静态方法的存在,使得我们可以很方便地在类上定义各种通用方法。那么,在JavaScript中有没有像Java中那样的静态方法呢? 我们先来看一段如下的JavaScript代码: var Component = function _Component(obj) {...

www.wuxianjie.net 673

ES6 类(Class)基本用法和静态属性+方法详解

转载请注明预见才能遇见的博客:http://my.csdn.net/ 原文地址: ES6 类(Class)基本用法和静态属性+方法详解 JavaScript语言的传统方法是通过构造函数,定义并生成新对象,prototype 属性使您有能力向对象添加属性和方法。下面是通过传统的方式创建和使用对象的案例: //Person.js function Person(x,y){ this

pcaxb的专栏 11万+

ES6中类的静态方法=> static 的使用

类就是实例的原型,以前我们一般会new一个test(),有在类中(test)定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法” class Father { static testMethod() { return 'hello'; } } Father.testMethod...

weixin_34149796的博客 2719

es6中class类静态方法,静态属性理解,实例属性,实例方法理解

es6新增了一种定义对象实例的方法,使用class关键字定义类,与class相关的知识点也逐步火热起来,但是部分理解起来相对抽象,简单对class相关的知识点进行总结,更好的使用class。对于基本概念,请参见阮一峰老师的es6入门教程。本文主要总结class静态相关。 关于类有两个概念,1,类自身,;2,类的实例对象 总的来说:静态的是指向类自身,而不是指向实例对象,主要是归属不同,这是静态...

前端361 1万+
上一篇: ES2015 字符扩展方法,展开数组... , 普通函数对比箭头函数,Object.assign
下一篇: TypeScript快速上手, 强类型与弱类型
ybilss
博客等级 码龄9年 27粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值