Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript对象是否可以具有另一种类型对象的集合属性?_Javascript_Object_Collections_Properties - Fatal编程技术网

javascript对象是否可以具有另一种类型对象的集合属性?

javascript对象是否可以具有另一种类型对象的集合属性?,javascript,object,collections,properties,Javascript,Object,Collections,Properties,我已经决定(不管是勇敢还是愚蠢还有待观察)提高我的javascript技能,而不仅仅是使用警报,我已经做到了 我一直在考虑使用javascript业务对象,希望创建一个有用的对象库,然后可以使用JSON或XML进行操作 再往下走 基本概念非常简单,但我似乎在任何地方都找不到一个示例,说明如何公开一个对象的属性,该对象是 不同类型的对象 例如,如果我有一个“部门”对象,我希望有一个“雇员”属性,它是“雇员”对象的集合 我有.Net的背景,所以我在这里可能会有完全错误的想法,但如果我是,我想学习正确

我已经决定(不管是勇敢还是愚蠢还有待观察)提高我的javascript技能,而不仅仅是使用警报,我已经做到了 我一直在考虑使用javascript业务对象,希望创建一个有用的对象库,然后可以使用JSON或XML进行操作 再往下走

基本概念非常简单,但我似乎在任何地方都找不到一个示例,说明如何公开一个对象的属性,该对象是 不同类型的对象

例如,如果我有一个“部门”对象,我希望有一个“雇员”属性,它是“雇员”对象的集合

我有.Net的背景,所以我在这里可能会有完全错误的想法,但如果我是,我想学习正确的方法来处理这个问题

这个概念是否仍然适用于javascript,javascript对象的属性是否可以是其他类型对象的集合?集合的概念是否存在(我也希望能够枚举整个集合),或者我应该考虑数组还是其他方面

下面是一些伪代码,可以说明我的目标:

function Department (Name) 
{
    this.DepartmentName=Name;
    this.Employees = null; // How do I initialise a property to be a collection of Employee objects?
    }

function Employee(FirstName, Surname)
{
    this.EmployeeName = Firstname + ' ' + Surname;
}

Department.prototype.addEmployee = function (Firstname, Surname) 
{
    //In here I want to create an Employee object and add it to an
    //'Employees' property of the department object
}
JavaScript中没有真正的“特定类型的对象列表”。您似乎只需要一个数组,它是一个“集合”(基本上是一个对象),具有数字键和值,可以是所有内容(JavaScript是动态的,因此没有简单的方法强制集合只包含一种类型的项,但无论如何都不需要):

然后在prototype函数中,您可以:

  • 创建类型为
    Employee
  • 将其添加到
    this.Employees
  • 比如:

    您可以访问
    Employee
    对象,如
    this.Employees[0]

    不要忘记原型函数末尾的分号。这是一个函数表达式,最好用分号终止函数表达式。另一方面,职能声明(如部门和员工)不需要这些声明。区别在于原型函数在赋值语句中用作表达式


    此外,
    CapitalCase
    通常用于施工人员(
    Employee
    );正则变量名通常是
    camelCase

    中的名称,感谢pimvdb,它填补了我一直在努力解决的空白。我想你只是通过索引循环遍历数组来遍历员工?@Mordy:是的,JavaScript的
    for
    循环与大多数其他语言一样-对于数组,通常
    for(var I=0;I
    。非常好。感谢您的帮助:)表达式应以分号结尾的说法不正确。许多表达式(例如分组运算符中的表达式)和某些语句(例如块语句)不需要以分号结尾。分号插入的规则不能简单概括,尽管它们通常在语句(但不是所有语句)之后需要。参见ECMA-262第7.9节。@RobG:你说得对,当前的措辞不正确。我的意思是描述函数表达式和声明之间的区别。
    function Department (Name) 
    {
        this.DepartmentName = Name;
        this.Employees = []; // empty array
    }
    
    Department.prototype.addEmployee = function (Firstname, Surname) 
    {
        // adds to the end of the array
        this.Employees.push(new Employee(Firstname, Surname));
    };