当前位置: 首页 > 面试题库 >

将符号引入ES6的动机是什么?

乌杰
2023-03-14
问题内容

我一直认为:symbolRuby中的这个概念是不必要的。我们可以像使用JavaScript一样轻松地使用纯字符串。现在,他们决定将JS中的内容复杂化。

我不明白动机。有人可以向我解释我们是否真的需要JavaScript中的符号?


问题答案:

将符号引入Javascript的最初动机是启用 私有 属性。

不幸的是,它们最终被严重降级。它们不再是私有的,因为您可以通过反射找到它们,例如使用Object.getOwnPropertySymbols或代理。

它们现在被称为 唯一
符号,它们的唯一用途是避免属性之间的名称冲突。例如,ECMAScript本身现在可以通过某些方法引入扩展钩子,您可以将其应用于对象(例如,定义其迭代协议),而不必冒与用户名冲突的风险。

是否足够强大,是否有动机在语言中添加符号尚有争议。



 类似资料:
  • 问题内容: 跨域资源共享 是一种允许网页向另一个域发出XMLHttpRequests的机制。 在过去的几天里,我一直在摆弄CORS,我认为我对所有工作原理都非常了解。 因此,我的问题不是关于CORS /预检如何工作,而是关于 将预检作为新的请求类型的原因 。我看不到任何原因,为什么服务器A需要向服务器B发送预检(PR)只是为了确定是否接受实际请求(RR)-B肯定有可能在没有请求的情况下接受/拒绝R

  • 问题内容: 我想知道为什么某些教程和其他MySQL管理工具在其查询中使用 重音符号 (`),如下所示: 当它在下面的查询中显示相同的结果时: 问题答案: 坟墓通常被称为“反勾号”,MySQL用来逃避MySQL保留字。 在PHPMyAdmin和各种示例中,将所有内容包装在反引号中是很常见的,因为大多数人宁愿使用自己喜欢的名称来命名表和列,而不必担心命名错误。我个人不同意这种做法…

  • 跨源资源共享是一种允许web页面对另一个域(从wikipedia)进行XMLHttpRequest的机制。 最近几天我一直在摆弄CORS,我想我已经很好地理解了一切的工作原理。 所以我的问题不是关于CORS/preflight是如何工作的,而是关于将preflight作为一种新的请求类型背后的原因。我看不出为什么服务器A需要向服务器B发送一个预置(PR)来了解真实的请求(RR)是否会被接受-B当然

  • 问题内容: 这似乎很明显,但是我发现自己对于何时使用花括号在ES6中导入单个模块感到有些困惑。例如,在我正在从事的React- Native项目中,我具有以下文件及其内容: initialState.js 在TodoReducer.js中,我必须不带花括号将其导入: 如果将花括号括起来,则以下代码行将出现以下错误: 无法读取未定义的属性待办事项 TodoReducer.js: 带有花括号的组件也发

  • 问题内容: 我在Aurelia应用程序中使用硬编码的类来表示模型。这是一个模型“ PostEdit”: 该对象被操纵后,我需要和它回服务器。但看起来的正在发送一个空字符串()。研究一下,将ES6类转换为时似乎被忽略了。 如何将我所有的属性都放入一个字符串中以提交回服务器? 问题答案: 我假设您正在使用符号来使数据保持私有,但这意味着如果要将数据包含在JSON表示中,则必须经过一些额外的步骤。 这是

  • 问题内容: 我正在看一些使用该符号的Python代码,但我不知道它的作用。我也不清楚要搜索的内容,因为搜索Python文档时会发现该符号,否则Google不会返回相关结果。 问题答案: 行首的符号用于类,函数和方法修饰符。 在这里阅读更多: PEP 318: Decorators Python Decorators 你会遇到的最常见的Python装饰器是: @property @classmeth