бьюсь об заклад уже который день. Инициализирую класс:
constructor(glb, texture, isClickable, isHoverable){
this.GLB = glb;
this.texture = texture;
this.clickable = isClickable;
this.hoverable = isHoverable;
this.loader = new Loader();
this.obj = "LALA";
}
Методом этого класса меняю переменную obj :
addToScene(_scene){
var texture = this.loader.textureloader.load(this.texture);
texture.flipY = false;
var hoverable = this.hoverable;
var clickable = this.clickable;
var tester = this.test.bind(this);
this.loader.gltfloader.load(this.GLB, function(gltf){
var root = gltf.scene;
root.traverse( function ( object ){
if(object.isMesh){
object.material = new THREE.MeshPhongMaterial({map: texture});
object.userData.canHover = hoverable;
object.userData.clickable = clickable;
object.userData.basicColor = object.material.color.getHex();
tester(object);
}
});
_scene.add(root);
});
}
test(object){
this.obj = object;
}
Ну, точнее двумя методами, меняет переменную именно функция test(object).
В итоге эта переменная не меняется, больше всего путает меня то, что когда я вывожу в консоль объект целиком, то в поле obj информация записана верно, то что мне нужно. Но когда я обращаюсь к конкретному полю этого класса, в выводе получаю значение, которое я задавал при инициализации этого класса.
Вопрос: Видимо, я не правильно изменяю переменную класса. Как правильно изменять переменную класса, чтобы она менялась у самого экземпляра класса?
Скрины с выводом и кодом приложу.
Всем заранее спасибо за ответы.

Упростил немного, здесь в сниппете я не имею возможность загрузить локальный url моего glb файла, но я произвел те же манипуляции в функции, которая отвечает за ошибки. В прочем это не важно, из кода видно, что я меняю переменную obj внутри функции загрузки, но на выходе я получаю не измененное значение.
class Object {
constructor() {
this.obj = "Init Value";
}
someMethod() {
var loader = new THREE.GLTFLoader();
var obj = this.obj;
loader.load("", function(gltf) {}, function(process) {}, function(error) {
console.log(obj)
obj = "Changed Value";
});
console.log(obj);
}
}
var Object1 = new Object();
Object1.someMethod();
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r121/three.min.js" integrity="sha512-yNJzAsg5JyP91u+sLHlUDULMBd3hmEiVkYeeN1cQBKaLZ7EyT6oH2u5THNIRM2Fu6VKcZJv+F/QAp1h/qzy9Ow==" crossorigin="anonymous"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/master/examples/js/loaders/GLTFLoader.js"></script>

console.log, как именно вызывается сам класс и многое другое. Если я сейчас напишу простой класс, где один метод ставит новое значение полю класса, то это отработает как часы :) – EzioMercer Mar 20 '22 at 18:16loader.loadработает асинхронно и вам надо дождаться завершения работы этой ф-ии. @Qwertiy уже показал как обойти эту проблему – EzioMercer Mar 21 '22 at 01:42