首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ES6 Symbol什么

(Undefined),时至今日,某些网络教程上还是这样分类: [不完整分类] 其实,随着 ECMAScript 发展和完善, ES6(2015) 和 ES11(2020) ,又分别增加了 Symbol...和 BigInt 两种类型,所以,完整分类应该是下面这样: [完整数据类型] 今天,我们就来看看 Symbol 到底是什么类型,为何要引入这样一个类型。...; // expected output: false 上面的代码创建了三个新 symbol 类型。...命名冲突 JavaScript 内置了一个 symbol ,那就是 ES6 Symbol.iterator。...symbol` 不会出现在 Object.keys() 结果,因此除非你明确地 export 一个 symbol,或者用 Object.getOwnPropertySymbols() 函数获取,否则其他代码无法访问这个属性

82710

ES6Symbol什么卵用

ES6新增了一类型,这个类型叫做Symbol,最大特点号称独一无二,下面我们来说一下这东西怎么用,最后再说一下他用在哪。 首先要注意一点是,Symbol函数前不能使用new命令,否则会报错。...通过这个例子应该就可以明白Symbol属性名上应用是什么效果了。 Symbol值作为属性名时,该属性还是公开属性,不是私有属性。...这个有点类似于javaprotected属性(protected和private区别:外部都是不可以访问类内子类可以继承protected不可以继承private)。...Symbol.for机制有点类似于单例模式,首先在全局搜索有没有以该参数作为名称Symbol值,如果有,就返回这个Symbol值,否则就新建并返回一个以该字符串为名称Symbol值。...如果要写很多代码,这会使得开发者体验不佳,访问私有属性不像 Java 或 TypeScript 那样方便。

25920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    javascript如何将字符串转成变量或可执行代码

    有这样一个需求:当前作用域内有未知一些变量,其中一个函数可以拿到某个变量名字符串,怎么能在函数内通过传进来字符串取到作用域链变量值,示例小 demo 如下: const name = '周小黑...' const age = 18 /** * @param {String} e 变量名字符串 * @returns value 通过变量名字符串作用域链取到变量值 */ function...return value } const str = fn('name') 要解决上面的问题,主要就是怎么将字符串转变成可执行代码?...主要有三种方式: eval() 函数 eval() 函数会将传入字符串当做 JavaScript 代码进行执行,所以下面的字符串可以正确取到变量对应值,eval 对比 new Function 和...setTimeout 定时器 setTimeout 第一个参数我们平时都是传一个函数,它其实也是可以传字符串进去浏览器是可以正常执行node环境中会报错。

    77930

    这个操作符 C++ 什么意思

    问题 我 Google Groups 论坛 comp.lang.c++.moderated 上看到一个回答 Hidden Features and Dark Corners of C++/STL ,他贴那段代码...,这个操作符(operator)-->没看懂是啥意思,我试了一下, Visual Studio 2008、G++ 4.4 和 gcc 上都可以编译通过,下面是代码: #include <stdio.h...) { int x = 10; while (x --> 0) // x goes to 0 { printf("%d ", x); } } 谁能解释下这个操作符到底是什么意思...在上面那段代码,因为--是后自减,所以执行顺序就是:先x > 0,然后x--。...说白了,上面的代码就等同于, while( (x--) > 0 ) 其实如果你把代码拷贝到 Visual Studio 上,这个问题很快就可以解决,因为代码会自动格式化为while (x-- > 0)。

    1.9K20

    应用悄悄拿走你隐私做了什么?只需30秒这个AI给你答案

    通过分析,Polisis将Web服务长篇幅隐私政策或协议转化成易于消化可视化图表,帮用户分析应用拿你信息做了什么。 举个例子。...△ Pokemon Go隐私协议可视化 这还只是第一步,Polisis经过进一步分析会提醒用户这些信息被用于什么地方了。比如位置信息可能被用于应用内广告推送、个性化定制、异地登录提醒等安全目的。...研究人员找到福坦莫大学法学院学生帮忙分析和标注了115个隐私协议,并从Google应用商店App收集了130000条用户协议帮助训练Polisis。...△ Google用户协议可视化分析 可视化表示,Polisis将应用协议内容划分为三部分。...外媒《Futurism》报道结尾总结说。 最后,附Polisis项目地址: https://pribot.org/ 及PriBot试玩地址: https://pribot.org/polisis

    60780

    搞事 | 这个周末我对落灰云服务器做了什么

    那么做什么好呢?...写代码怎么能没有点自己 side project ?...我当然也不例外 我一直维护着一个叫『谜之屋』开源项目: https://github.com/Ehco1996/django-sspanel 所以我决定为这个项目搭一套监控系统 这个系统主要分为3个部分...,我们发现是调用支付宝api时候发生了网络错误,我们甚至能在右侧看到有多少用户遇上了这个错,包括: 他们用系统是什么 浏览器是什么… 清楚了问题发生原因和过程,我就可以很快做出解决方案: 请求失败时候...凭借我经验,这一定事发生了 「memory leak 内存泄露」,我上服务器一看,本来一直代码果然挂了,爆出了一个大大 Memory Error.

    1.3K20

    jdk1.8HashMap扩容时候做了哪些优化

    首先讲一下hashMap扩容为2幂次.为什么呢? 假设HashMap容量为15转化成二进制为1111,length-1得出二进制为1110 哈希值为1111和1110 ?...扩容优化 下面我们讲解下JDK1.8做了哪些优化。我们使用是2次幂扩展(指长度扩为原来2倍),所以,元素位置要么是原位置,要么是原位置再移动2次幂位置。...这个设计确实非常巧妙,既省去了重新计算hash值时间,而且同时,由于新增1bit是0还是1可以认为是随机,因此resize过程,均匀把之前冲突节点分散到新bucket了。...这一块就是JDK1.8新增优化点。有一点注意区别,JDK1.7rehash时候,旧链表迁移新链表时候,如果在新表数组索引位置相同,则链表元素会倒置,但是从上图可以看出,JDK1.8不会倒置。...旧数组同一条Entry链上元素,通过重新计算索引位置后,有可能被放到了新数组不同位置上。 下面举个例子说明下扩容过程。

    2.2K20

    jdk1.8HashMap扩容时候做了哪些优化

    首先讲一下hashMap扩容为2幂次.为什么呢?...总结:因为2幂-1都是11111结尾,所以碰撞几率小。使Hash算法结果均匀分布。 扩容优化 下面我们讲解下JDK1.8做了哪些优化。...我们使用是2次幂扩展(指长度扩为原来2倍),所以,元素位置要么是原位置,要么是原位置再移动2次幂位置。...这个设计确实非常巧妙,既省去了重新计算hash值时间,而且同时,由于新增1bit是0还是1可以认为是随机,因此resize过程,均匀把之前冲突节点分散到新bucket了。...有一点注意区别,JDK1.7rehash时候,旧链表迁移新链表时候,如果在新表数组索引位置相同,则链表元素会倒置,但是从上图可以看出,JDK1.8不会倒置。

    51520

    可执行单元校验: IDE 中提升 AI 智能体代码准确性

    在这些 功能,我们最想解决是:AI 所生成代码单元是否可执行? 为什么可执行率?...最终,我们发现在不考虑准确性情况下, 3000 个代码,大概只有 600 个代码是可以被编译器编译, 即可执行代码比例大概是 20%。...当然了,一些高 ROI 价值,大家可以考虑执行三次。 可执行单元校验 可执行单元校验是指通过对生成代码进行测试和验证,确保其能够被编译器编译和执行。... AutoDev ,对应有结合数据库 SQL、单元测试、功能代码生成功能,所以我们初步设计了以下校验机制: 单元测试语法(TODO):检查生成单元测试代码是否符合语言语法规范,确保其能够被编译器正确编译...这个锅,必须由开发者来背。 进一步改进和实践 根据上述内容,GPT 3.5 对我们进行了一些建议。

    15410

    C++代码可执行程序x86和arm上区别

    从使用上来看,可执行程序肯定是不通用。 image.png 生成可执行程序大小都有差异呢。  但是,如果源码编译,如果环境类似,相同源码可以直接移植。...X86 86 表示其早期处理器最后 2 位数字。...指令集架构 (ISA) 定义了处理指令、访问内存、管理 IO 方式,并将处理器与程序员连接起来以生成高效代码。...RISC 是同类中最新一种,其中活动被拆分(简化)为简单指令,一条指令一个时钟周期内执行,数百万条此类指令一秒钟内以更快速度处理。...虽然它必须执行多条指令,但由于其强大处理器和流水线,整体速度更高。 X86 处理器遵循复杂指令集计算 (CISC) 架构。 复杂指令多个时钟周期中单个步骤处理。

    1.3K10

    java日志框架(一)JUL 学习 ,这个什么,他代码如何使用,一篇文章讲清楚

    JUL 是什么 JUL全称Java util Logging是java原生日志框架,使用时不需要另外引用第三方类库,相对其他日志框 架使用方便,学习简单,能够小型应用灵活使用。 ?...代码如何使用(控制台输出) 1 首先创建一个maven项目 ? 2 写对应代码 ? ?...以后日志不仅仅是控制台输出了,而且还可以输出到文件 运行上面代码之后: ? 还有文件: ? 这个里面的日志和控制台一模一样 日志对象父子关系 ? ?...= UTF-8 # 指定日志消息格式 java.util.logging.SimpleFormatter.format = %4$s: %5$s [%1$tc]%n 我们还可以配置自己处理器,配置文件里面把默认关掉...,之后使用这个配置文件,那么就会使用我们自定义东西。

    97420

    什么代码要求我们使用LocalDateTime而不是Date?

    作者:何甜甜在吗 来源:http://1t.click/a7Gm 项目开发过程中经常遇到时间处理,但是你真的用对了吗,理解阿里巴巴开发手册禁用static修饰SimpleDateFormat...通过阅读本篇文章你将了解到: 为什么需要LocalDate、LocalTime、LocalDateTime【java8新提供类】; java8新时间API使用方式,包括创建、格式化、解析、计算、...对时间进行格式化,但SimpleDateFormat是线程不安全SimpleDateFormatformat方法最终调用代码: private StringBuffer format(Date date...calb属性设置cal c、返回设置好cal对象 但是这三步不是原子操作 多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat...关注我,回复如下代码,即可获得百度盘地址,无套路领取!

    1.1K20

    看ASM代码强势插入

    前言 我之前写过一篇AOP文章 看AspectJAndroid强势插入 是通过AspectJ来实现,本篇是『巴掌』投稿,他通过使用ASM来讲解了Java和AndroidAOP方法,非常值得大家学习交流...再写ASM插入代码前,我们必须意识到一件事,那就是得知道我们会在onMethodEnter存一个方法开始时间,再在onMethodExit存一个方法结束时间,再去相减,那么问题来了,这个时间我们存哪呢...然后便是插入时间统计代码了,我之前一篇文章就有介绍过 手摸手增加字节码往方法体内插代码(http://www.wangyuwei.me/2017/01/22/%E6%89%8B%E6%91%B8%E6%...只对newFunc2做了方法耗时统计。...ASM提供类生成一个插入代码字节流再丢给虚拟机,自定义代理得实现ClassFileTransformer,并且提供premain()方法,写有premain方法类得MANIFEST.MF显示调用

    4.9K31

    VR追逐浪潮,原来这个狂暴世界如此美丽

    这个系列第一集已于4月20日达拉斯EarthX音乐节、纽波特海滩电影节、国际海洋电影之旅和MountainFilm电影节上发布。...该团队正在寻求资金以便今年夏天南太平洋完成制作,带领人们回顾John Ritter70年代萨摩亚,汤加和斐济旅程。...Jay Henningfield表示:“借助VR技术,这个项目可以提供给大多数人梦寐以求体验。该项目允许用户充满异国情调地方航行,并接触到这些偏远环境和居住地的人们,当然还能拥抱浪潮。”...该项目团队与Scripps海洋学研究所、Waitt研究所和斐济珊瑚礁探险家合作,希望减少海洋塑料,保护和恢复波利尼西亚群岛红树林,珊瑚礁和濒危物种。...最后,Henningfield表示:“我们希望人们能够感受到与海洋联系,并加入到保护它斗争。”

    67680
    领券