JavaScript 在 Function 对象上使用 toString 来读取文本内容

2024-01-06

对下面的函数调用 toString() 会在浏览器中返回不同的字符串。我理解这是因为 ECMA-262 15.3.4.2 为每个供应商留下了回旋余地。

除了所有语法之外,Chrome 还会返回注释。遗憾的是 Firefox 3.6 忽略了这些注释。根据 Firefox 的行为,我还没有测试过 IE、Opera 或 Safari。

function foo() {
    /* comment */
    var bar = true;
}

具体来说,我试图将元数据嵌入到函数内的特殊格式的注释块中。稍后,函数 toString() 方法的返回值将被解析,并将值作为对象返回。

我一直无法找到兼容性表或 toString() 的替代方案。社区有什么想法吗?顺便说一句,预处理 JS 文件不是一个选项。 :(

多谢。 :)


虽然不像嵌入注释那么直接,但由于函数是 JS 中的一流对象,因此您可以为它们指定任意属性。例如。:

> function f(x) { return x * x; }
undefined
> f
function f(x) { return x * x; }
> f.comment = 'Hello'
Hello
> f.comment
Hello

通过这种方式,您可以干净且可移植地将元数据嵌入到函数对象中。

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

JavaScript 在 Function 对象上使用 toString 来读取文本内容 的相关文章

随机推荐

  • 如何通过Kafka流式传输大文件?

    我正在将基于 ACID 的整体架构迁移到基于事件的微服务架构 在单体应用中 潜在的大文件存储在数据库中 我想与微服务共享此信息 包括文件内容 我的方法是将文件分割成编号块并发送多条消息 例如 1FileCreatedMessage带有元数据
  • 有人可以证实我对 ASP.NET 生命周期的理解吗?

    我的目标是找到一种方法在创建页面之前的最后一刻更新页面标题 我有一个母版页和一个内容占位符 它们始终包含具有特定属性的页面 该属性可以在代码中的任何位置更新 但我希望该标记的最终值是 html 标题 该页面的预渲染事件是设置标题的最佳位置吗
  • 带时区的 Strptime

    我有一个我解析的字符串DateTime strptime 字符串中日期的时区是 CET 但 Ruby 创建了一个 UTC DateTime 对象 当然它有 2 小时的偏移量 目前我正在解决这个问题DateTime strptime chan
  • 服务生成器改造

    有人可以帮助我理解createService下面代码中的方法 我需要了解方法的参数 Class 是什么S以及下面的深入代码 public class ServiceGenerator public static final String A
  • IE 中表格的 jQuery UI 性能问题

    我在让 UI 代码在 IE 中正常运行时遇到问题 我有一个表 值矩阵 每个单元格可以为空或包含项目列表 我希望用户能够在单元格之间拖动项目 所以我的 HTML 看起来像这样 table tr td td th col 1 th th col
  • 运行 HCatalog 时出错

    A LOAD eventnew txt USING HCatalogLoader 2015 07 08 19 56 34 875 主要 错误 org apache pig tools grunt Grunt 错误 1070 无法使用导入解析
  • 对话流(API.ai)中的数据上下文在哪里

    我一直在阅读有关对话流的内容 但有一件事我仍然不清楚 我将尝试举一个例子 我想实现如下转换 User Hello Google what are some interesting cities Bot Hello there Sydney
  • 卷曲错误“没有替代证书..”

    我们只有一台托管在 Amazon 的服务器 开发服务器 出现问题 通过运行以下命令向特定域发出curl 请求时会出现问题 gt curl https api plivo com 结果是 curl 51 SSL 没有替代证书主题名称与目标主机
  • Selenium sendKeys 不发送所有字符

    我使用 Java Selenium 和 Chrome 进行自动化测试 我们的开发人员最近将我们的 UI 从 AngularJS 升级到 Angular2 不确定这是否重要 但从那时起 sendKeys 就在文本字段中输入不完整的字符 这是一
  • CodeIgniter 搜索结果分页

    嗯 我已经到处搜索了 但仍然找不到解决我的问题的方法 我对 php 和 codeigniter 仍然很陌生 所以也许我已经错过了答案 但无论如何 这就是我想要做的 这是我的控制器 c index php 调用搜索函数并对结果数组执行分页
  • 如何在 Android L 中使用“PackageInstaller”类安装/更新/删除 APK?

    请检查下面的类并给我如何使用它们的建议https developer android com reference android content pm PackageInstaller html https developer androi
  • Xcode,是否可以在构建时拦截和更改代码而不更新文件?如果是这样,怎么办?

    我需要一种方法在代码进入编译器之前拦截代码 对其进行更改 并使其在文件 Xcode 中保持不变 我认为构建脚本是一种流拦截 但事实似乎并非如此 另一种方法可能是在构建之前和之后运行脚本 我应该注意这有什么影响吗 编辑 为什么 我有一个基于特
  • mysqldump 失败并显示“正在跳过表 'table1' 的转储数据,它没有字段”

    我正在从旧的 mysql 数据库运行 mysqldump 如果重要的话 mysqldump 是 mariadb 发行版的一部分 当我在本地运行 mysqldump 时 没有问题 当我在远程系统上运行它时 我没有转储任何数据 如果我运行它my
  • jQuery UI datepicker:限制某些月份(不是月份范围)

    我正在寻求限制月份jQuery UI datepicker 例如 我想阻止用户选择任何给定年份的四月 八月和十月 我的月份有一系列数字 例如 4 8 10 我希望你尝试过一些东西 但我有几分钟的空闲时间 所以如果我理解正确的话 你想禁用几个
  • 将项目添加到核心数据一对多关系的 NSSet

    我有一种核心数据关系 其中一个实体拥有许多另一个实体 据我所知 许多类的每个实例都保存在 NSSet 中 在一个班级内 我的问题是 将项目添加到该集合的最佳方法是什么 我认为这一定是一个非常常见的问题 但我似乎找不到一个简单的方法 这是我的
  • 使用Python ftplib上传文件时出现“553无法打开该文件:没有这样的文件或目录”

    得到这个FTP上传代码 这个例子有正确的数据 所以你可以尝试一下 该路径是正确的 因为我从选择框 filename askopenfilename I get ftplib error perm 553无法打开该文件 没有这样的文件或目录
  • 为 Spring Cloud Gateway 配置 CORS 策略

    我在单独的服务器上运行 Spring Cloud 网关 配置如下 spring cloud gateway globalcors cors configurations I also tried allowedOrigins http lo
  • JDBC ResultSet:我需要一个 getDateTime,但只有 getDate 和 getTimeStamp

    我想使用 JDBC 从 Oracle DB 表中获取 DATETIME 列 这是我的代码 int columnType rsmd getColumnType i if columnType Types DATE Date aDate rs
  • Java的隐藏特性

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 看完之后C 的隐藏特性 https stackoverflow com questions 9
  • JavaScript 在 Function 对象上使用 toString 来读取文本内容

    对下面的函数调用 toString 会在浏览器中返回不同的字符串 我理解这是因为 ECMA 262 15 3 4 2 为每个供应商留下了回旋余地 除了所有语法之外 Chrome 还会返回注释 遗憾的是 Firefox 3 6 忽略了这些注释