You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ES6环境下跨JS文件调用对象数据遇异常,求解决方案

问题排查与修复方案

我来帮你梳理下代码里的问题,这几个错误导致了程序执行时的异常:

1. Users类的方法定义不规范

ES6类中定义成员方法不能用var关键字,直接写方法名即可;另外你代码里的Newuser没有用let/const声明,会变成全局变量,这不仅不符合规范,还可能引发意外问题。

2. 错误地直接访问实例属性而非调用方法

你创建了Users类的实例newie,但firstName并不是Users实例的属性——它是User()方法返回的对象里的属性,所以必须先调用User()方法才能拿到数据。

3. 导入路径可能不匹配

login.js里写的导入路径是../data/user,但你的源文件名叫users.js,路径需要和文件名对应上,否则会找不到模块。

4. 命名风格不一致(可选但建议修正)

lastname用了小写n,和firstName的驼峰命名不一致,统一成lastName会让代码更易读。


修正后的代码

users.js

export default class Users {
  // 正确定义类方法,去掉多余的var关键字
  User() {
    // 用const声明变量,避免全局污染
    const newUser = {
      firstName: 'Tony',
      lastName: 'franklyn', // 统一驼峰命名
      email: 'franky@gmail.com',
      password: 'Franklin123'
    };
    return newUser;
  }
}

login.js

// 修正导入路径,匹配users.js文件名
import Users from '../data/users';

// 实例化Users类,调用User方法获取用户数据
const userInstance = new Users();
const userData = userInstance.User();

export default class Signup {
  async Register() {
    // 使用userData中的firstName属性
    await t.typeText(this.firstName, userData.firstName);
  }
}

额外优化建议

如果User()方法只是用来生成固定的用户数据,没必要每次都实例化类,可以把它改成静态方法,这样不用创建实例就能直接调用:

优化后的users.js

export default class Users {
  // 定义静态方法
  static User() {
    const newUser = {
      firstName: 'Tony',
      lastName: 'franklyn',
      email: 'franky@gmail.com',
      password: 'Franklin123'
    };
    return newUser;
  }
}

对应优化的login.js

import Users from '../data/users';

// 直接调用静态方法,无需实例化
const userData = Users.User();

export default class Signup {
  async Register() {
    await t.typeText(this.firstName, userData.firstName);
  }
}

内容的提问来源于stack exchange,提问作者Akeem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:31:55