网上众说纷纭 ES6不支持私有变量与函数,对确实直接写不支持。
我们变通一下是可以的,以下是我的代码:
export var MyClass;
(function () {
var privateVar = 42;
var me;//保存对this的引用用以调用公有变量或函数
function privateFunc() {
console.log('private func result' + me.publicMember);
}
MyClass = class myClass {
constructor() {
me = this;
this.publicMember = 2;
console.log(privateVar); // 42
}
callPrivateFunc() {
privateFunc();
}
}
})();
test.js:
app.js:
import {
MyClass
} from './test'
var myc = new MyClass;
myc.callPrivateFunc();
webpack编译一下:输出文件bundle.js
index.html
<!DOCTYPE html>
<html>
<head>
<script src="bundle.js">
</script>
</head>
</html>
运行打印结果如下:
[Log] 42 (bundle.js, line 86)
[Log] private func result (bundle.js, line 81)