Javascript 如何在js中为特定类型创建集合?
在C#中,我有一个这样类型的集合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是一种动态类型的语言。您不能强制执行编译时
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());