由于它目前是通过Babel + Webpack编译的,因此模块的导出类将创建一个闭包:在模块内部创建的变量将在类实例之间共享。
bar.js
:
let foo;
export default class Bar {
set foo(value) {
foo = value;
}
get foo() {
return foo;
}
}
app.js
:
import Bar from './bar.js';
var barOne = new Bar();
var barTwo = new Bar();
barOne.foo = 'quux';
console.assert(barTwo.foo === 'quux');
我想知道这种行为是否符合规范。
答案 0 :(得分:2)
我想知道这种行为是否符合规范。
是。 JavaScript具有词法范围。这不会随着课程而改变。
请记住,类或多或少只是构造函数+ prototype
的语法糖。如果你写了
let foo;
function Bar(){};
Bar.prototype = {
set foo(value) {
foo = value;
}
get foo() {
return foo;
}
};
module.exports = Bar;
代替?