gpt4 book ai didi

javascript - ES2015 导出类是否创建闭包?

转载 作者:行者123 更新时间:2023-11-29 14:45:09 25 4
gpt4 key购买 nike

因为它目前是通过 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');

我想知道这种行为是否符合规范。

最佳答案

I wonder if this behavour correct according to the spec.

是的。 JavaScript 具有词法作用域。这不会随着类(class)而改变。

请记住,类或多或少只是构造函数 + 原型(prototype) 的语法糖。如果你写的话,你会不会有同样的问题

let foo;

function Bar(){};

Bar.prototype = {
set foo(value) {
foo = value;
}
get foo() {
return foo;
}
};

module.exports = Bar;

代替?

关于javascript - ES2015 导出类是否创建闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33832984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com