ES2015导出的类是否创建了一个闭包
Does ES2015 exported class create a closure?
由于它目前是通过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');
我想知道根据规范,这种行为是否正确。
我想知道根据规范,这种行为是否正确
是的。JavaScript具有词法范围。这不会随着课程而改变。
请记住,类或多或少只是构造函数+prototype
的语法糖。如果你写,你会有同样的问题吗
let foo;
function Bar(){};
Bar.prototype = {
set foo(value) {
foo = value;
}
get foo() {
return foo;
}
};
module.exports = Bar;
相反?
相关文章:
- 使用Google闭包编译器包含一个Ecmascript 6类
- 在谷歌地图示例中为 Ajax 调用制作一个 JavaScript 闭包
- 闭包中的本地变量从外部更改.这是一个javascript错误,或者我做错了什么
- 将一个简单的函数声明形成JavaScript中的闭包
- 递增并存储一个“;私人的“;使用闭包的变量
- 为什么需要在这个闭包中创建一个变量
- 这是闭包的一个很好的例子吗?
- 为什么允许通过原型继承访问另一个闭包范围内的私有变量
- 为什么这不是一个javascript闭包
- JavaScript 中的闭包:再举一个例子
- 这是一个JavaScript闭包错误吗?
- 闭包的意外行为:回调保存最后一个值
- Javascript - 在闭包中使用函数构造函数是一个坏主意吗?
- 我们是否可以使用谷歌闭包创建一个带有复选框和组合框的对话框
- 向Jquery$.each传递一个闭包
- 我如何告诉谷歌闭包编译器不要删除一个变量
- 这是一个javascript闭包吗
- Is回调函数始终是一个闭包
- Javascript闭包保持返回一个函数,但应该是一个字符串
- TypeScript 闭包 - 一个“几乎”的解决方案