gpt4 book ai didi

javascript - 为什么我总是收到错误消息说对象属性未定义?

转载 作者:行者123 更新时间:2023-11-29 19:33:41 25 4
gpt4 key购买 nike

我一直在试图找出 JS 中的这个错误,但无法理解它为什么会发生。该程序应该从 person 对象继承属性并添加两个附加属性,sID 和 courses。然后 for 循环应该将用户输入的值(至少 5)推送到属性中。但我遇到的问题是,一旦它到达 courses 属性(一个数组),我就会不断收到一条错误消息,指出类(class)未定义。任何帮助是极大的赞赏。

    // person object
var person = { firstname: "", lastname: "", email: "" };
var student = {};
student.prototype = person;
student.prototype.sid = "";
student.prototype.courses = {};



/******************************************************************************
* your code starts here
*****************************************************************************/

var answer = null;
function getanswer(string) {
answer = string;
return answer;
}
do {
getanswer(prompt("Please enter your first name, last name, student ID, email and courses (seperated by ',')"));
var array = answer.split(',');
answer = array;
for(var i = 0; i <= answer.length; i++) {
if (i < 4) {
student[i] = answer[i];
alert(student[i]);
}
if(i > 3) {
student.courses[i] = answer[i];
alert(student.courses[i]);
}
}

} while(answer !== null || answer !== "" );

最佳答案

var student = {};
student.prototype = person;

您似乎在尝试在 student 实例创建后对其进行修改。通常,这在 JavaScript 中是不可能的。 (可能有一些支持此功能的非标准 API,但您不应该使用它们。)此外,对象的原型(prototype)不会直接公开为对象的公共(public) .prototype 属性.如果你想读取一个实例的原型(prototype),你实际上需要通过它的构造函数来查找它,如 .constructor.prototype (但不要试图修改它!)。

要使用 JavaScript 的原型(prototype)继承,您需要创建一个构造函数,并在其上设置原型(prototype)。例如,在您的情况下:

function Student() {
}
Student.prototype = person;

然后您可以使用此构造函数创建一个 Student 实例,该实例将从 person 继承值:

var student = new Student;

关于javascript - 为什么我总是收到错误消息说对象属性未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26170320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com