为什么我一直收到一个错误,说对象属性未定义
Why do I keep getting an error saying an object property is undefined?
我一直在试图找出JS中的这个错误,但不明白为什么会发生。该程序应该继承person对象的属性,并添加两个额外的属性,sID和courses。然后,for循环应该将用户输入的值(最小值为5)推送到属性中。然而,我遇到的问题是,一旦它到达courses属性(一个数组),我就会不断收到一个错误,说courses是未定义的。非常感谢您的帮助。
// 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
属性公开。如果你想读取一个实例的原型,你实际上需要通过它的构造函数.constructor.prototype
来查找它(但不要试图修改它!)。
要使用JavaScript的原型继承,您需要创建一个构造函数,并在此基础上设置原型。例如,在您的案例中:
function Student() {
}
Student.prototype = person;
然后,您可以使用此构造函数创建一个Student
实例,该实例将继承person
:的值
var student = new Student;
相关文章:
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 一个ajax循环有两个输出错误innerHTML
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- 我怎么能把一个错误当作未捕获的错误来记录呢
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 从另一个JSAppleScript运行另一个JS AppleScript时出现权限错误
- 当张贴到数据库时,I'我得到了一个“;可以't在它们被发送错误之后设置报头”;
- javascript window.location在检查firebug时给了我一个错误的url路径
- 调试器;[错误]194:11:标识符是一个保留字
- new SharedWorker(“whatever.js”)返回一个错误
- 页面上的2个表单带有JS验证-其中一个抛出电子邮件验证错误
- JQuery关注上一个点击的输入错误
- 在一个函数中,我有一个未捕获的语法错误:意外的标记else
- 未捕获的引用错误——一个函数工作而另一个不起作用
- 图表API错误——[一个或多个参与者未能绘制()]