Javascript `Object.defineProperty(exports,';uu-esModule';{value:true})`vs`exports.u-esModule=true`
我认为:Javascript `Object.defineProperty(exports,';uu-esModule';{value:true})`vs`exports.u-esModule=true`,javascript,ecmascript-6,es6-modules,umd,Javascript,Ecmascript 6,Es6 Modules,Umd,我认为: Object.defineProperty(导出,'.\u esModule',{value:true}) 应给出与此相同的结果: exports.\uu esModule=true 但我见过的所有UMD捆绑包生成器都使用了第一个选项。有什么原因吗?对象。defineProperty()的默认值与正常分配属性不同。具体而言,如果未指定以下属性,则它们都默认为false: configurable enumerable writable 因此,Object.defineProper
Object.defineProperty(导出,'.\u esModule',{value:true})
应给出与此相同的结果:
exports.\uu esModule=true
但我见过的所有UMD捆绑包生成器都使用了第一个选项。有什么原因吗?
对象。defineProperty()
的默认值与正常分配属性不同。具体而言,如果未指定以下属性,则它们都默认为false
:
configurable
enumerable
writable
因此,Object.defineProperty(exports,'.\u esModule',{value:true})
将具有相同的值,但不可配置、可枚举或可写,而exports.\u esModule=true
将所有这些属性默认为true
您可以在Object.definePropert()
上阅读有关此级别的详细信息
但我见过的所有UMD捆绑包生成器都使用了第一个选项。有什么原因吗
据推测,这些工具的设计者希望配置该属性,以便它不能被更改(可写)、删除(可配置)或枚举。
对象。defineProperty()
具有不同于正常分配属性的默认值。具体而言,如果未指定以下属性,则它们都默认为false
:
configurable
enumerable
writable
因此,Object.defineProperty(exports,'.\u esModule',{value:true})
将具有相同的值,但不可配置、可枚举或可写,而exports.\u esModule=true
将所有这些属性默认为true
您可以在Object.definePropert()
上阅读有关此级别的详细信息
但我见过的所有UMD捆绑包生成器都使用了第一个选项。有什么原因吗
据推测,这些工具的设计者希望配置该属性,使其不能被更改(可写)、删除(可配置)或枚举。区别在于第一个工具创建了一个不可枚举的属性。我想这是主要原因。@FelixKling啊,这使sense@Bergi这个问题不是重复的。问题是关于ES模块使用
Object.defineProperty
的选择,这是一个非常具体的用例。区别在于第一个用例创建了一个不可枚举的属性。我想这是主要原因。@FelixKling啊,这使sense@Bergi这个问题不是重复的。问题是关于ES模块使用Object.defineProperty
的选择,这是一个非常具体的用例。嗯,我一直认为默认情况下是可写的。。。直到。嗯,我一直认为默认情况下可写是正确的。。。直到。