在下文中,values
中的file-2.js
是普通对象吗?
// file-1.js
export {
FOO,
BAR
} from '~/my-values';
// file-2.js
import * as values from '~/file-1';
// what is `values` here? an object instance?
我问,因为我想使用类似values.hasOwnProperty('FOO')
的内容而rollup引发了以下错误:
'hasOwnProperty' is not exported by 'file-1.js'
附带问题:是否有一种使用导入和导出关键字测试代码的便捷方法?据我所知,Chrome开发工具不支持它们的片段。
答案 0 :(得分:3)
这些是module namespace exotic objects。它们具有异国情调意味着它们不是完全正常的物体(它们具有不同的内部构件)。
他们的原型链上也没有Object.prototype
,因此您无法使用hasOwnProperty
,但您应该可以将其与Function.prototype.call
或Function.prototype.apply
一起使用他们确实有[[ GetOwnProperty ]]
Object.prototype.hasOwnProperty.call(values, 'FOO');
您也可以使用Reflect.has
。
Reflect.has(values, 'FOO');
此外,由于原型为null
,您几乎也可以使用in
:
'FOO' in values
答案 1 :(得分:0)
让我们说X.js如下:
export const t = 0;
export const t2 = 4;
export default w = -1;
var w3 = -9;
当您从X导入*作为Y时;
基本上你从该文件获得所有导出,然后通过调用具有导出的X.some var来获取它们。 例如:
var t = X.t; // local t will be equal 0.
你无法在没有导出的情况下从X文件中获取变量(因为它们是在本地设置的。
您也可以通过获取所需的值来导入上述代码,例如,
import {t} from X.js
var local_t = t; // local_t is set to 3
导出默认值意味着如果导入文件时不使用const或*,则会获得默认导出值。 例如:
import something from X.js;
var _local = something; //_local equals -1
希望它有所帮助。