一个javascript对象可以有一个属性是另一种类型对象的集合吗?
Can a javascript object have a property which is a collection of another type of object?
我已经决定(是勇敢还是愚蠢还有待观察)决定提高我的javascript技能,而不仅仅是使用警报一直在考虑使用javascript业务对象,希望创建一个有用的对象库,然后我可以用JSON或XML操作
基本概念是足够简单,但我似乎找不到一个例子,如何公开一个对象的属性,是一个集合一个不同类型的对象。
例如,如果我有一个"Department"对象,我希望有一个"Employees"属性,它是一个"Employee"对象的集合。
我来自。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是动态的,所以没有简单的方法来强制集合只包含一种类型的项目,但你应该永远不需要):
function Department (Name)
{
this.DepartmentName = Name;
this.Employees = []; // empty array
}
那么在原型函数中,你可以:
- 创建
Employee
类型的新实例(对象) - 添加到
this.Employees
:
Department.prototype.addEmployee = function (Firstname, Surname)
{
// adds to the end of the array
this.Employees.push(new Employee(Firstname, Surname));
};
您可以访问Employee
对象,如this.Employees[0]
等
不要忘记原型函数末尾的分号。这是一个函数表达式,用分号结束函数表达式是很好的做法。另一方面,函数声明(如Department
和Employee
)不需要这些。不同之处在于原型函数被用作赋值语句中的表达式。
此外,CapitalCase
通常用于构造函数(Employee
);常规变量名通常是camelCase
中的名称。
- 字符串对象类型或基元类型也是如此
- 如何在dojo中查询对象类型
- 对象类型scrollTo
- 在 Javascript 中创建全局变量时是否需要指定对象类型
- JavaScript:创建新对象类型的方法
- 如何获取对象类型
- FormData()只发送对象类型的多文件
- 获取对象类型
- 依赖对象类型检查Javascript似乎是多余的
- 访问javascript中对象类型的数组成员
- 比较对象类型时是否需要第三个=
- 如何在 Google 闭包编译器中指定对象类型的@param @return
- 窗口对象通过对象类型测试,但 hasOwnProperty 导致错误
- Javascript 空对象类型
- 何时有时将对象类型定义为将实例绑定方法镜像为构造函数上的静态实用程序函数很有用
- 在下拉列表中使用多个对象类型为数据网格提供筛选
- 为什么 String.prototype 中的“this”指的是对象类型,而不是字符串类型
- 自定义对象/类型 Javascript
- 在 Javascript 中获取对象类型的名称
- 两种 JavaScript 对象类型之间的差异