ES6 中符号命名有约定吗?

2024-03-22

我正在摆弄 ES6,查看符号。与 Ruby 不同,例如你会写:symbol,ES6符号似乎允许任何“标准”变量名。说实话,我觉得这很令人困惑:

var privateProperty = Symbol();
var obj = {};
obj[privateProperty] = 'some value goes here';

因为它往往让我认为privateProperty可能是像几年前一样的普通字符串。使用:privateProperty无效。

所以就像使用$bar对于 jQuery 对象或bar$对于 RxJS/Bacon 流,我想知道 ES6 中是否已经有命名符号的既定约定?


obj[privateProperty] = …;往往让我认为privateProperty可能是像几年前一样的普通字符串。

嗯,这是我们需要忘记的旧观念。privateProperty is a key,它可以是一个字符串(属性name) 或符号。同样,我们已经学会了区分(整数)indices来自“正常”属性。

ES6 似乎允许任何“标准”变量名

就像鲁比一样。不同之处在于 ES6 没有引入符号的字面表示法(它们解析为相同的东西),而是允许仅通过使用来创建它们Symbol(本地)或Symbol.for(全球)。

没有标准约定用于命名保存符号值的变量。
当然,您可以随时使用匈牙利记数法 https://en.wikipedia.org/wiki/Hungarian_notation如果您倾向于需要此类类型注释。如果我必须创造一个标准,我建议使用更微妙的前导下划线(var _myPrivate)。属性名称中的下划线总是暗示着一些特殊的东西,并且对于计算属性键来说它看起来很相似(obj[_myPrivate]) then.

ES6 中符号命名有约定吗?

虽然还没有命名符号保存变量的约定,但肯定有命名符号本身的约定:

  • 局部符号应该有一个非常具有描述性的描述符字符串(作为参数给出Symbol)。当然,无论如何它们仍然是独一无二的,所以你基本上可以使用任何你想要的名称。
  • 全局符号需要避免冲突。约定是适当地命名它们,并用点连接这些命名空间名称 - 就像 Java 包名称一样。如果符号可用作全局变量,则其描述符应具有相同的名称(类似于内置的本机符号,类似于@@iterator = Symbol.for("Symbol.iterator");)。如果符号由模块或库导出,则其描述符应以模块/库名称作为前缀(以避免冲突)。

最好的做法是对变量使用相同的名称(就像本机符号已经做的那样,Symbol.iterator.toString() == "Symbol(Symbol.iterator)").

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES6 中符号命名有约定吗? 的相关文章

  • 循环内的局部变量会被垃圾收集吗?

    我想知道将循环内引用的任何变量放在循环外是否更有效 或者它们可以像函数内的变量一样被垃圾收集吗 var obj key val for var i 0 i lt 10 i console log obj or for var i 0 i l
  • 1分30秒倒计时器javascript

    我有代码 但它适用于 2 分钟计时器 我需要将其修改为 1 分 30 秒计时器 我已经尝试过 但未能从 1 30 开始计时器 因为我是这一行的初学者 并且想学习如何做到这一点 这是代码 div div
  • Chrome 内存/垃圾收集问题

    我在使用 Chrome 时遇到内存 垃圾收集问题 我正在开发一个照片上传网站 该网站允许我的客户使用 HTML5 和文件 API 拖放照片进行上传 因此这在 IE 中不起作用 它仅适用于 Chrome 和 FF 我还没有在 Safari O
  • 如何在 javascript 或 jquery 中按尺寸对图像进行排序

    如何在 JavaScript 或 jQuery 中按尺寸对图像进行排序 我的代码如下 var imgsrc if document images length lt 1 alert No images to open return for
  • 禁用整个站点的 IE8 加速器

    是的 我知道有类似的问题 https stackoverflow com questions 499565 is it possible to disable ie8 accelerators on my website在 SO 上 但它已
  • 如何在启用导航栏的情况下打开新的浏览器窗口?

    我有这个JS方法 function OpenLink strDestination var features left 10 top 10 location 0 menubar 0 resizable 0 scrollbars 1 stat
  • FormData 中的 Blob 为 null

    我正在尝试通过远程 API 通过 ajax 在 android 中发送创建的照片 我在用着相机图片背景 https github com an rahulpandey cordova plugin camerapicturebackgrou
  • 使用 jQuery/JavaScript 将文本框值复制到剪贴板

    我有一个文本框和按钮 如下所示 div class col xs 11 style padding 20px 0 div
  • 将数组中的所有元素相乘

    我在这里找不到我真正想要的例子 我想将所有数组元素相乘 因此如果数组包含 1 2 3 总和将为 123 6 到目前为止 我已经得到了这段代码 但它返回未定义 function multiply array var sum 1 for var
  • 很奇怪!调用 window.location 或 location.replace 会重定向到该页面,然后再次返回!

    我处于调试模式 因此我可以看到正在访问哪个页面 当我打电话时window location or window location replace 它会转到该页面 然后返回原始页面 怎么会这样 解决方案是添加 window location
  • 如何正确删除动画集中引用的 Raphael SVG 元素?

    我有一组动画 Raphael SVG 元素 我正在通过用户发起的 ajax 调用添加新元素并删除旧元素 我 set push 新元素 但因为我需要删除的元素通常不是集合中的最后一个元素 所以我使用 element remove 而不是 se
  • 如何在服务器端按钮点击时关闭当前标签页?

    我尝试在确认后关闭当前选项卡 因此我将以下代码放在确认按钮的末尾 但选项卡没有关闭 string jScript ClientScript RegisterClientScriptBlock this GetType keyClientBl
  • 使用 javascript 调整图像大小以在画布 createPattern 中使用

    我见过一些关于如何调整图像大小的技巧 在 IMG 标签内使用 但我想在里面有一个图像变量 一个 Javascript 调整它的大小 然后使用 a 中的图像 context createPattern 图像 重复 我还没有找到任何提示 关于如
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • 如何上传文件 - sails.js

    我可以下载图像和 pdf 但无法下载文档文件 doc pptx odt 下载文档 doc pptx odt 时 仅将其下载为 ZIP XML 文件 我可以做什么 我在用着 填写上传文件文档 https github com balderda
  • javascript/jquery 禁用点击提交按钮,防止重复提交

    所以我的提交按钮如下所示 a href img src images user create product png border 0 a 当我双击它时 显然会双重提交 问题是 我将信息保存在数据库中 因此那里会有重复的信息 我不想那样 这
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • window.open 使用 css 样式

    我想设计我的 window open 目前 我的网页上有一些项目由于解析了某个类而打开 然后在新窗口中打开指定的文本 我想更改字体大小 字体和填充等 这是我的 JavaScript 代码
  • 在 Firefox 中使用 Javascript 检测键盘布局

    有没有办法在 Firefox 中检测客户端的键盘布局 我知道 Chrome 的答案是肯定的 请参阅https developer mozilla org en US docs Web API Navigator keyboard https
  • 如何从react-bootstrap复选框获取值/属性?

    我正在尝试使用反应引导复选框 https react bootstrap github io components html forms controls https react bootstrap github io components

随机推荐

  • AWS Lambda 函数从不调用回调

    我创建了一个节点 lambda 函数 用于对 Aurora 数据库进行简单调用 当我在控制台中测试该函数时 查询返回 我可以在日志中看到结果 但回调似乎从未被调用 因此我的 lambda 函数超时 我不知道问题出在哪里 希望这里有人能指出我
  • 处理基于 Strope.js 的聊天应用程序中的状态

    是否有任何现有解决方案可以为基于 Strope js 的聊天应用程序提供在线状态处理 我有一个基于 Strope js 的简单聊天应用程序 我想仅显示在线并动态更改列表的用户 我想知道是否有任何现有的解决方案 可能是 Strope 插件 可
  • 具有管理员权限的java运行可执行文件

    如何从java程序中以管理员权限调用可执行bat文件 该可执行文件位于另一个目录中 您需要使用runas http www computerhope com runas htm命令 像下面这样 Runtime exec runas user
  • 如何禁用 Amazon S3 原始终端节点访问

    假设您想在 S3 上托管一个静态网站 您创建一个名为 name 的存储桶your website com并将其设置为网络托管 您在域的区域文件中添加 CNAME 以指向您的 S3 存储桶 伟大的 当您访问时一切正常http your web
  • 子网站上的 Sharepoint Foundation 母版页

    使用 Sharepoint Foundation 2010 我编辑了 v4 master 添加了对新 CSS 文件的引用 保存了更改 并将它们应用到主站点 没有问题 然而 当我创建一个子网站时 由于某些令人恼火的原因 它使用旧版本的 v4
  • MySQL 存储过程错误处理

    我相信目前 MySQL 中没有任何东西可以允许访问SQLSTATEMySQL 存储过程中最后执行的语句 这意味着当泛型SQLException在存储过程中引发 很难 不可能得出错误的确切性质 有没有人有一个解决方法来派生SQLSTATEMy
  • django 部署到 Heroku:服务器错误(500)

    我正在尝试将我的应用程序部署到heroku 部署已正确完成 但我收到服务器错误 500 当我将 DEBUG 设置为 true 时 不会发生严重错误 所以我认为加载静态文件有问题 我在日志中找不到任何值得注意的严重错误 我已经安装了白噪音 但
  • 如何根据分数标准化评论

    规范评论的最佳方法是什么 IE 假设我们有用户可以从 1 星到 5 星投票的产品 简单地取平均值并不是一个好方法 因为它没有考虑到评论的数量 例如 如果一个产品只有一条 5 星评论 那么它不应该领先于有 10000 条评论的产品 仅仅因为唯
  • 如何将 .xproj 引用到 .csproj 中?

    I have csproj项目 我想参考其他项目 xproj 一切看起来都很好 但是当我尝试构建解决方案时 我却不能 因为 dll 丢失了 当我引用 dll from bin release net452 本身那么一切都好 如何解决这个问题
  • 使用 Cygwin 中的 Windows Python

    我最近在 Windows 上使用 Cygwin 我想使用 Windows 安装的 Python 所以在测试过程中我使用 cygdrive c Python26 python exe myfile py而不是python myfile exe
  • 从 Oracle 函数返回引用游标

    我收到错误 PLS 00382 表达式类型错误 我想将参考光标作为输出 请让我知道我该怎么做 create or replace function test cur return sys refcursor as var ref sys r
  • 在 R 中使用表情符号

    我有一个包含很多表情符号的 csv 文件 Person Message A A How are you B Alright A 我怎么能够read csv 进入 R 以便表情符号不会变黑 我想跟踪一段时间内表情符号的使用情况 我的控制台有一
  • 解释 Merkle 树在最终一致性中的使用

    默克尔树 http en wikipedia org wiki Hash tree在几个分布式 复制的键 值存储中用作反熵机制 Dynamo http www allthingsdistributed com files amazon dy
  • 如何在 RST/阅读文档的代码块中添加复制按钮

    我一直在编写个人 操作方法 指南 记录并保留我的学习日记 我现在有一个几乎太长的代码块 当我自己遇到这么长的代码时 试图仅突出显示该代码块而不突出显示整个页面 或者还不够 总是令人沮丧 所以 我的问题是 对于rst 重构文本 code bl
  • 如何将 PostGIS 添加到 PostgreSQL pgAdmin?

    我已经安装了 PostgreSQL 和 pgAdmin 但我想添加一个 PostGIS 服务器 以便我可以处理地理信息系统项目 我正在跟进本教程 http workshops boundlessgeo com postgis intro c
  • Windows 应用商店应用程序 UI 更新

    我正在为 Windows 8 编写一个 Windows Store App 玩具应用程序 它只有一个 xaml 页面 其中包含TextBlock 该页面的 MyTimer 类为DataContext this DataContext new
  • UITextView从底部开始

    我遇到了问题UI文本视图 我以前见过其他人也遇到过这个问题 但是每当我的应用程序在我的手机上加载时 所有UITextViews从文本的底部开始 我必须向上滚动 我已经尝试了多种解决方案 但我需要一个仅在情节提要上使用的解决方案 因为我有一些
  • dropzone.js 和 jquery 版本兼容性

    我最近在一些项目中使用 dropzone js 并配置选项没有问题 但在一个新项目中我使用的是由 Zend Framework 3 自动安装的最新版本的 jQuery 3 1 0 它似乎会导致一些问题与 dropzone js 版本 4 3
  • 如何在Tomcat(servlet容器)中监听套接字?

    我必须让网络应用程序监听套接字 服务器套接字 并处理套接字流 但该应用程序只是部署在 Tomcat 中 Tomcat 只是一个 servlet 容器 它没有 JCA 支持 并且在servlet线程中建立服务器套接字是不合理的 解决方案1 丑
  • ES6 中符号命名有约定吗?

    我正在摆弄 ES6 查看符号 与 Ruby 不同 例如你会写 symbol ES6符号似乎允许任何 标准 变量名 说实话 我觉得这很令人困惑 var privateProperty Symbol var obj obj privatePro