Javascript 如何在js中为特定类型创建集合?

Javascript 如何在js中为特定类型创建集合?,javascript,Javascript,在C#中,我有一个这样类型的集合 public class scale { } public class scales : List<scale> { // some codes. } 如何在js中创建scales(函数的集合)?您可以在JavaScript中使用数组: var scales = []; scales.push(new scale()); // and so on... 但是JavaScript是一种动态类型的语言。您不能强制执行编译时

在C#中,我有一个这样类型的集合

 public class scale
 {

 }


 public class scales : List<scale>
 {
     // some codes.
 }

如何在js中创建scales(函数的集合)?

您可以在JavaScript中使用数组:

var scales = [];
scales.push(new scale());
// and so on...
但是JavaScript是一种动态类型的语言。您不能强制执行编译时类型安全并创建只能具有
scale
实例的数组

编辑1
数组
类已经有一些辅助方法。有关更多信息,请参阅

编辑2
顺便说一下,您上面定义的
scale
变量确实是一个函数,但是当您使用新操作符创建
scale
的新实例时,您得到的不再是一个函数,而是一个对象。因此,您不创建“函数的集合”,而是创建对象的集合。

Javascript目前没有正确的集合类型概念,只需使用数组类型:

var scales = [];
scales.push(new scale());
您仍然可以访问关联的属性:

scales[0].myProp = "Hello";
您可以将
scales
定义为类本身:

var scales = function() { this._items = []; };
scales.prototype = {
   add: function(scale) {
       this._items.push(scale);
   }
}
用法:

var scales = new scales();
scales.add(new scale());

那么如何在scales中创建其他属性和函数呢?如果您想做一些更复杂的事情,请将
scales
定义为一个单独的类。是否可以获得这样的值var s=scales[0]。myProp而不是var s=scales。\u items[0]使用第二种方法时使用.myProp?如果不扩展
数组.prototype
对象而不是创建新的自定义对象,则不太可能-修改内置对象通常不是一个好主意,因为您不知道它可能会对其他代码产生什么不利影响。那么如何在scale中创建其他属性和函数?以及操作列表时,可以使用或。
var scales = new scales();
scales.add(new scale());