Вместо того, чтобы пытаться сохранить camera
в глобальном объекте, вы должны передать camera
в вашу update
функцию .
<edit>
О, а также, если вы действительно хотите, чтобы глобальный объект работал, посмотрите на это:
- Среда Node.js: используйте
global.name = value;
и global.name
- Среда браузера: используйте
window.name = value;
и window.name
- Другая среда: вы можете взять любой глобальный метод или свойство, например
console
, и добавить что-то в его структуру объекта (все в JS является объектом!), Сохраняя при этом исходное значение / функцию без изменений, например так: console.camera = camera;
и console.log('still works!');
и console.camera
Для других глобальных методов / свойств, посмотрите здесь: MDN .
Это плохая практика, поэтому старайтесь избегать их использования, если не является абсолютно необходимым
</edit>
Лучшая практика:
index.js
// Import external modules
import * from THREE;
import update from 'my-module';
// Define camera
var camera = new THREE.PerspectiveCamera();
// Update camera
update(camera);
my-module.js
// Define update function
export function update (cameraObject) {
cameraObject.update();
}
Передав camera
в функцию обновления и получив ее как cameraObject
(Это помогло избежать путаницы с двумя camera
), вы можете работать с cameraObject
, как если бы это было camera
внутри функции. Объект camera
остается нетронутым после вызова update();