如何在另一个JS文件中的一个JS文件中使用对象中的数据?

时间:2018-04-29 15:21:51

标签: javascript ecmascript-6

我正在使用ES6,我正在尝试将名为Users的方法中的数据导出到另一个名为的不同js文件中的方法:

users.js

 export default class Users {

   var User() {
    Newuser = {
        firstName: 'Tony',
        lastname: 'franklyn',
        email: `franky@gmail.com`,
        password: 'Franklin123'
    }

    return Newuser;
  }

}

login.js

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

const newie = new Users();

export default class Signup {

    async Register() {

      await t
     .typeText(this.firstName,newie.firstName)

     }

  }

每当我的程序执行时,我得 TypeError:无法读取属性' firstName'未定义的。

我真的对此感到困惑,注意我没有那么多js经验。

1 个答案:

答案 0 :(得分:0)

当然!

问题是NewUsers被包装在名为User()的方法下。而不是newie.firstName,它应该是:newie.User().firstName;

一些事情:

  1. 始终定义您的变量,最好使用constlet。避免使用var。这将防止全局范围被污染,并防止您的变量被覆盖。
  2. 因此,代替NewUsers,它应该是:

    export default class Users {
    
       // This is a method name. 
       // Methods do not use var, const or let
       User() {
       // This would be the variable. 
       // You would use const, because you are not
       // reassigning (using equals sign) its content.
        const Newuser = {
            firstName: 'Tony',
            lastname: 'franklyn',
            email: `franky@gmail.com`,
            password: 'Franklin123'
        }
    
        return Newuser;
      }
    
    }
    
    1. 如果你想要的是导出数据,你不一定需要一个类。这应该可以正常工作:
    2. <强> users.js

      module.exports = {
      firstName: 'Tony',
              lastname: 'franklyn',
              email: `franky@gmail.com`,
              password: 'Franklin123'
      
      }
      

      如果您想要多个用户,请创建一个数组:

      module.exports = [{
          firstName: 'Tony',
                  lastname: 'franklyn',
                  email: `franky@gmail.com`,
                  password: 'Franklin123'
      
          }, 
        {
      firstName: 'Pedro',
                  lastname: 'Smith',
                  email: `smith@gmail.com`,
                  password: 'Smithy123'
      
          }
      }
      ]
      

      并在login.js

      // When you import Users, it will bring the properties you defined above.
      import Users from '../data/user';
      
      
      export default class Signup {
      
          async Register() {
      
            await t
           .typeText(this.firstName,Users.firstName)
      
           }
      
        }
      

      //如果你采用多用户方法,那么:

      而不是Users.firstName,您可以使用:

      // Fraklyn    
      Users[0].firstName
      
      // Pedro
      Users[1].firstName