自学内容网 自学内容网

js中this引用不到对象

const loader2 = new FontLoader();
          loader2.load('/font/ZH_CN.json', function (font) {
            const labelGeometry4 = new TextGeometry('xxxxxxxxxxxxxx', {
              font: font,
              size: 100,
              depth: 100,
              bevelEnabled: true,
              bevelThickness: 20,
              bevelSize: 20,
              bevelSegments: 50,
            });

            const labelMaterial4 = new THREE.MeshBasicMaterial({ color: 0xffffff });
            const label4 = new THREE.Mesh(labelGeometry4, labelMaterial4);
            label4.position.set(0.5, 1, 0.5);
            this.model.add(label4);
          });

这个错误 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'model') 表示在你的代码中,this 的上下文没有正确绑定,导致 this.model 变成了 undefined

在 JavaScript 中,this 的值取决于函数的调用方式。在你的代码中,thisloader2.load 的回调函数中可能并不是你期望的对象。

要解决这个问题,你可以使用箭头函数来保持 this 的上下文,或者在外部保存 this 的引用。以下是使用箭头函数的修改示例:

const loader2 = new FontLoader();
loader2.load('/font/ZH_CN.json', (font) => { // 使用箭头函数
  const labelGeometry4 = new TextGeometry('xxxxxxxxxxxxxx', {
    font: font,
    size: 100,
    depth: 100,
    bevelEnabled: true,
    bevelThickness: 20,
    bevelSize: 20,
    bevelSegments: 50,
  });

  const labelMaterial4 = new THREE.MeshBasicMaterial({ color: 0xffffff });
  const label4 = new THREE.Mesh(labelGeometry4, labelMaterial4);
  label4.position.set(0.5, 1, 0.5);
  this.model.add(label4); // 这里的 this 仍然指向外部上下文
});


原文地址:https://blog.csdn.net/asdfsadfasdfsa/article/details/142935439

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!