JavaScript对象创建

4

我有一个像这样的JavaScript对象

 var student = function () {
     this.id = 1;
     this.Name = "Shohel";
     this.Roll = "04115407";
     this.Session = "03-04";
     this.Subject = "CSE";
 };

我有一个像这样的JavaScript数组列表

var students = [];

现在我想把“student”推入“students”,如下所示。
students.push(new student())  //no prolem

students.push(new student[id = 3]) //Problem

这里发生了异常,我该怎么像C#中添加列表一样推送JavaScript对象,以表示第二行?谢谢。


1
当您尝试使用方括号而不是圆括号调用函数时,您期望得到什么? - adeneo
当我推入学生时,我想设置默认值为学生。 - Shohel
你没有提供任何方法将值传递到你的对象类中。 - PeterKA
但我可以用C#完成相同的工作,而不提供参数,在JavaScript中是否可能? - Shohel
JavaScript不是C#。它们是不同的语言,工作方式也不同。如果你想在C#中做类似的事情,那么答案是否定的,你不能在JavaScript中这样做。我强烈建议阅读JavaScript教程,如果你打算使用这种语言:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide。 - Felix Kling
2个回答

8
您无法直接这样做,但您可以将配置作为参数传递给构造函数并像这样读取它。
var student = function (config) {
                config = config || {};
                this.id = config.id || 1;
                this.Name = config.Name || "Shohel";
                this.Roll = config.Roll || "04115407";
                this.Session = config.Session || "03-04";
                this.Subject = config.Subject || "CSE";
            };

并像这样调用它

students.push(new student({id: 3}));

编辑,首选项

正如adeneo所指出的那样,如果您想要摆脱重复的||来设置默认值,可以使用jQuery来传递它们。

var student = function (config) {
                    var defaults = {
                        id: 1,
                        Name: "Shohel",
                        Roll: "04115407",
                        Session: "03-04",
                        Subject: "CSE"
                    };
                    config = $.extend(defaults, config || {});
                    this.id = config.id;
                    this.Name = config.Name;
                    this.Roll = config.Roll;
                    this.Session = config.Session;
                    this.Subject = config.Subject;
                };

1
作为旁注,您可以通过在“config = config || {id:1, Name:'Shohel' ...}”中定义对象来消除大部分丑陋的OR。 - adeneo
1
我考虑过这个问题,但是如果配置实际上已经定义,而且所有参数都没有定义,那么你可能会得到一些不好的值,即未定义。 - axelduch
2
如果这是个问题,那么这个问题被标记为jQuery,所以只需执行 config = $.extend(config, defaults) 等操作即可删除所有丑陋的OR's。 - adeneo
你在这个问题上赢了我,谢谢你的建议,我会相应地更新我的答案。 - axelduch
1
你能更明确一些吗?你遇到了什么错误或行为? - axelduch
显示剩余5条评论

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接