我正经历着一种非常奇怪的行为,甚至说不出该归咎于哪一个包。我的设置: RequireJS项目,JSXTransformer和jsx!插件,我有一个es6类,如下所示:
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后,结果包中的转置输出是:
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实例上的属性。
发布于 2015-05-07 22:33:01
将/** @preventMunge */添加到文件的顶部。请参阅这个GitHub问题
是的,对不起,这是一种非标准的fb主义。现在,您可以通过将
/** @preventMunge */放在文件的顶部来解决这一问题,并关闭此功能--但这也是一个相当大的fb主义。我们应该(a)把它变成一个转换选项(而不是一个直接的docblock指令)和(b)让它选择,而不是选择退出(因为它是不标准的)。 对于上下文:我们在每个模块的基础上讨论所有前缀下的对象属性,部分原因是我们的前缀下面的约定同时适用于对象和类。此外,即使我们希望放松对象与类之间的区别,也不可能判断(在一般情况下)属性是否是对this的引用,因为别名变量可能会出现(即var self = this; self._stuff;)。
https://stackoverflow.com/questions/30110437
复制相似问题