如何使用Traceur在ES6类中实现私有方法[重复]

2024-01-05

我现在使用 Traceur Compiler 来利用 ES6 功能。

我想从 ES5 实现这些东西:

function Animal() {
    var self = this,
        sayHi;

    sayHi  = function() {
        self.hi();
    };

    this.hi = function() {/* ... */}
}

目前traceur不支持private and public关键词(来自和谐 http://wiki.ecmascript.org/doku.php?id=harmony:classes)。并且ES6类语法不允许使用简单的var (or let) 类主体中的语句。

我发现的唯一方法是在类声明之前模拟私有。就像是:

var sayHi = function() {
    // ... do stuff
};

class Animal {
...

总比什么都没有好,但正如预期的那样,你无法通过正确的考试this到私有方法没有apply-ing or bind- 每次都这样。

那么,是否有可能在与traceur编译器兼容的ES6类中使用私有数据?


没有private, public or protected当前关键词ECMAScript 6 规范 https://people.mozilla.org/~jorendorff/es6-draft.html.

所以Traceur不支持private and public。 6to5(目前称为“Babel”)实现这个提议 https://github.com/zenparsing/es-abstract-refs用于实验目的(另见这次讨论 https://esdiscuss.org/topic/proposal-abstract-references)。但这毕竟只是提议。

所以现在你可以通过模拟私有属性WeakMap (see here https://curiosity-driven.org/private-properties-in-javascript)。另一种选择是Symbol- 但它不提供实际的隐私,因为可以通过以下方式轻松访问该财产Object.getOwnPropertySymbols.

恕我直言,目前最好的解决方案是使用伪隐私。如果您经常使用apply or call用你的方法,那么这个方法是非常特定于对象的。因此,值得在类中使用下划线前缀来声明它:

class Animal {

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

如何使用Traceur在ES6类中实现私有方法[重复] 的相关文章

随机推荐

  • 在 .NET 中创建内部 XAML 文件

    在我的 Silverlight 项目中 我想制作一个包含 xaml 的程序集 该程序集无法从程序集外部看到 但是 我没有明确的方法可以做到这一点 当我修改 xaml cs 文件上的访问修饰符时 编译器告诉我 Partial declarat
  • Parse.com 错误“启用固定时不允许使用该方法。”当我使用 PFQueryTableViewController 子类时

    我目前通过 CocoaPods 使用 1 6 1 最新 在我的 swift 项目中 我启用本地数据存储 然后设置解析应用程序 ID 之后 我加载一个故事板 它是 PFQueryTableViewController 的子类 那里真的没什么特
  • 仅当按下 Tab 按钮时才在两个文本区域之间切换

    通常 当用户访问网页并按键盘上的 TAB 按钮时 选择会从页面开头开始从一个元素移动到另一个元素 我正在寻找一种解决方案 通过按键盘上的 TAB 按钮在两个特定文本区域之间切换 并在加载网页时将初始焦点放在第一个文本区域上 对于此 TAB
  • 如何使用ggplot2创建黑白透明重叠直方图?

    我使用 ggplot2 创建两个透明重叠直方图 test data frame condition rep c a b each 500 value rep 1 1000 test 1 500 value rnorm 500 test 50
  • 使用 Javascript 控制嵌入式 Grooveshark 小部件?

    如何使用 Javascript 播放 暂停嵌入式 Grooveshark 小部件 想要按顺序播放单独的单首歌曲小部件 例如在soundcloud 用户页面 http soundcloud com tick tock favorites 我没
  • 淡出第一个 div,然后淡入第二个 div

    遇到一个问题 我需要做一些类似淡入淡出横幅的事情 一个 div 淡出 然后第二个 div 淡入 代码如下 document ready function setTimeout function zeus fadeOut 1000 5000
  • 如何限制排序后 Oracle 查询返回的行数?

    有没有办法制作一个Oracle查询的行为就像包含 MySQLlimit clause 在 MySQL 中 我可以这样做 select from sometable order by name limit 20 10 获取第 21 行到第 3
  • 获取 32px favicon.ico

    我试图获取网站的 32px favicon ico 但它获得的响应是 16px favicon 我猜是因为我试图通过智能手机获取它 但我尝试使用以下命令更改 http 请愿书的用户代理没有结果这里是我的代码 DefaultHttpClien
  • 我如何访问 ASP.NET 5 的内部结构

    在 asp net 5 之前 我会将 internalsVisibleTo some namespace name 添加到 AssemblyInfo cs 但我的 WebApi 项目中不再有 assemblyInfo cs 如何将 WebA
  • 角度 2:使用服务广播事件

    我试图在一个组件中单击按钮以将焦点放在另一个组件上的元素上 坦率地说 我不明白为什么这必须如此复杂 但我无法实现任何实际有效的更简单的方法 我正在使用一项服务 它不需要传递任何数据 除了that发生了点击声 我不确定监听组件如何响应该事件
  • 证书安装访问被拒绝错误

    我正在尝试在 localMachine Root 中添加证书 下面是我尝试过的代码 但这不允许我添加到本地计算机中 而添加它时说访问被拒绝 如何允许安装在本地计算机内 X509Certificate2 cert new X509Certif
  • 使用 Firestore 时如何为 RecyclerView 添加搜索过滤器?

    所以 我正在尝试创建显示作者列表 图像 姓名 简介 的应用程序 但问题是我在实现搜索功能时遇到问题 合作指南RecyclerView我用的是here https android jlelse eu fetch data from fireb
  • 如何删除R中箱线图中的异常值? [复制]

    这个问题在这里已经有答案了 可能的重复 更改箱线图中的异常值规则 https stackoverflow com questions 4994313 changing the outlier rule in a boxplot 我需要使用箱
  • 验证 ASP.NET 中的查询字符串

    是否有一个库可以在我当前的 ASP NET 应用程序中使用来验证查询字符串 编辑 使用正则表达式查找模式 例如字符串 仅 仅数字 长度为x的字符串 等 Thanks 不知道库 但您可以使用它来检查查询字符串是否存在 if String Is
  • 可以在工具栏中添加图像视图吗?

    我需要有关的信息Toolbar 我想在我的中添加四张图片Toolbar例如主页 新闻 搜索和消息 所以我把Imageview是在Toolbar 现在我不知道如何在这些图像上添加侦听器 我该怎么做 我还有一个导航抽屉 我想要它 如果你按Ima
  • 身份不是使用 WIF 的 IClaimsIdentity(在 ASP.NET MVC 4 / Azure 上)

    我有 VS2012RC 的 WIF 工具 并且我正在尝试让我的 ASP NET MVC 4 项目使用它们 我已经安装了NuGet包 https nuget org packages Microsoft IdentityModel 3 5 0
  • LuaSocket、Lua 5.2 和 Redis

    有谁能够让这些一起工作吗 我已经得到 5 2 工作得很好 它可以找到 lua redis redis lua 但是它无法加载套接字模块 我似乎无法使用 lua LuaSocket 版本 2 0 2 有人有任何建议可以让这个工作吗 我尝试过制
  • 向 iOS 应用程序添加一个对所有视图可见的顶栏

    在选项卡栏 iOS 应用程序中添加顶部栏 视图 的最佳方法是什么 该顶部栏始终保留在所有视图的顶部 无论选择哪个选项卡 如下图所示 我会使用 UIViewController Containment 看一眼 https developer
  • VBA 求解器不循环

    我试图在多个列上使用求解器 用户定义的确切列数 看完这里的问题后 我仍然找不到我的代码有什么问题 我对 VBA 还很陌生 当我运行它时 它在第一年运行良好 但不适用于接下来的几年 Dim wsFM B3 As Worksheet Set w
  • 如何使用Traceur在ES6类中实现私有方法[重复]

    这个问题在这里已经有答案了 我现在使用 Traceur Compiler 来利用 ES6 功能 我想从 ES5 实现这些东西 function Animal var self this sayHi sayHi function self h