JavaScript类创建与导入导出报错:实例未定义求助
解决JavaScript模块中类实例未定义的问题
我正在学习JavaScript的对象与类创建内容,在person.js里定义了Person类,通过export default导出,然后在script.js里用import导入并创建实例,但控制台提示实例未定义。
原HTML代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Classes</title> <script type="module" src="person.js"></script> <script type="module" src="script.js"></script> </head> <body></body> </html>
原person.js代码
class Person { constructor( firstName, lastName, dateOfbirth, Age, Nationality, ) { this.firstName = firstName; this.lastName = lastName; this.dateOfbirth = dateOfbirth; this.Age = Age; this.Nationality = Nationality } } export default Person
原script.js代码
import Person from "./person.js"; const Shek = new Person ( John, Doe, 10111990, 27, 'American' )
问题分析与解决方案
核心问题1:字符串参数未加引号
实例化Person时,John和Doe是字符串类型的名字,但没有用引号包裹,JavaScript会将其视为未定义的变量,直接导致实例创建失败,后续访问实例时就会提示“未定义”。核心问题2:缺少控制台输出语句
你没有编写console.log(Shek)来打印实例,就算实例创建成功也无法看到结果;而前面的参数错误已经导致实例根本无法生成,所以控制台必然报错。额外优化:参数名符合JS命名规范
JavaScript中变量、参数通常采用小驼峰命名(首字母小写,后续单词首字母大写),比如将Age改为age、Nationality改为nationality,保持代码风格一致性。
修正后的script.js
import Person from "./person.js"; // 为字符串参数添加引号,同时修正实例名的命名规范(可选但推荐) const shek = new Person ( 'John', 'Doe', 10111990, 27, 'American' ); // 添加控制台输出语句 console.log(shek);
优化后的person.js(可选)
class Person { constructor( firstName, lastName, dateOfBirth, // 修正为小驼峰命名 age, nationality, ) { this.firstName = firstName; this.lastName = lastName; this.dateOfBirth = dateOfBirth; this.age = age; this.nationality = nationality; } } export default Person
内容的提问来源于stack exchange,提问作者BlackmonDon
相关产品推荐
相关产品推荐

