JavaScript构造函数代码本地运行报错,视频中正常,原因何在?
问题分析与解决
核心错误1:构造函数未使用new关键字调用
JavaScript构造函数必须通过new关键字实例化对象,否则会触发两个问题:
- 函数内部的
this会指向全局对象(浏览器环境下为window),而非新创建的实例。 - 构造函数默认返回
undefined,导致你的student变量实际是undefined。
正确调用方式:
var student = new stud("Craig", 21, "Engineering");
核心错误2:变量命名不一致
你代码中声明的变量是student,但后续DOM操作里使用的是students(多了一个s),这会直接触发students is not defined的报错。需要保持变量名统一,要么全用student,要么全用students。
修正后的完整代码:
function stud(name, age, studies) { this.name = name; this.age = age; this.studies = studies; } // 使用new关键字实例化,且变量名统一 var student = new stud("Craig", 21, "Engineering"); document.getElementById("demo").innerHTML = "the student called " + student.name + " whose age is " + student.age + " is studying " + student.studies;
视频中能运行的可能原因
视频里代码能运行大概率是这两种情况:
- 视频中实际使用了
new关键字(可能你漏看了细节)。 - 视频环境中预先定义过全局的
students变量,但这种写法不符合规范。
内容的提问来源于stack exchange,提问作者SiO
相关产品推荐
相关产品推荐

