首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >es6类中的前导下划线移位错误

es6类中的前导下划线移位错误
EN

Stack Overflow用户
提问于 2015-05-07 19:51:32
回答 1查看 395关注 0票数 4

我正经历着一种非常奇怪的行为,甚至说不出该归咎于哪一个包。我的设置: RequireJS项目,JSXTransformer和jsx!插件,我有一个es6类,如下所示:

代码语言:javascript
复制
define([
    'react'
], function(
    React
) {

    class MyComponent extends React.Component {

        myMethod() {
            otherObject.someMethod()._privateProp; // Yes, we need this accessing and have no influence on it
        }

    }

    return MyComponent;

});

运行r.js后,结果包中的转置输出是:

代码语言:javascript
复制
define('jsx!project/components/InputOutput',[
    'react'
], function(
    React
) {

    var ____Class8=React.Component;for(var ____Class8____Key in ____Class8){if(____Class8.hasOwnProperty(____Class8____Key)){MyComponent[____Class8____Key]=____Class8[____Class8____Key];}}var ____SuperProtoOf____Class8=____Class8===null?null:____Class8.prototype;MyComponent.prototype=Object.create(____SuperProtoOf____Class8);MyComponent.prototype.constructor=MyComponent;MyComponent.__superConstructor__=____Class8;function MyComponent(){"use strict";if(____Class8!==null){____Class8.apply(this,arguments);}}

        MyComponent.prototype.myMethod=function() {"use strict";
            otherObject.someMethod().$MyComponent_privateProp;
        };



    return MyComponent;

});

注意otherObject.someMethod().$MyComponent_privateProp;是如何在那里编写的。这显然会中断,因为它不是MyComponent实例上的属性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-07 22:33:01

/** @preventMunge */添加到文件的顶部。请参阅这个GitHub问题

是的,对不起,这是一种非标准的fb主义。现在,您可以通过将/** @preventMunge */放在文件的顶部来解决这一问题,并关闭此功能--但这也是一个相当大的fb主义。我们应该(a)把它变成一个转换选项(而不是一个直接的docblock指令)和(b)让它选择,而不是选择退出(因为它是不标准的)。 对于上下文:我们在每个模块的基础上讨论所有前缀下的对象属性,部分原因是我们的前缀下面的约定同时适用于对象和类。此外,即使我们希望放松对象与类之间的区别,也不可能判断(在一般情况下)属性是否是对this的引用,因为别名变量可能会出现(即var self = this; self._stuff;)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30110437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档