如何定义我稍后可以实例化的类?
我自己写了一个使用jquery的旋转器类,看起来像:
var Rotator =
{
Loop: null,
init: function(identifierName)
{
........
}
}
如果我想在我的页面上有一个旋转器,这很好。我只是致电Rotator.init()
并准备就绪。
但是当我想要3个旋转器时,我需要定义3次改变其名称的全班代码。
如果我能做的话会更容易
Instance1 = new rotator;
Instance2 = new rotator;
Instance3 = new rotator;
答案 0 :(得分:3)
以下是您的对象文字可能看起来像可重复使用的命名函数,可以多次实例化:
var Rotator = function(name) {
this.Name = name;
this.Loop = null;
this.init = function(identifierName)
{
this.Name = identifierName;
};
};
// usage:
var foorotator = new Rotator('foo');
var barrotator = new Rotator('bar');
alert(foorotator.Name);
alert(barrotator.Name);
编辑后:
答案 1 :(得分:2)
Xander的解决方案看起来像一个类似对象只能使用一次的可接受形式。但是,如果您计划子类化或乘法实例化它,则应该将方法应用于原型,而不是在主类(构造函数)函数中定义它们。例如:
var Rotator = function(name) {
//run your initialization logic inside this constructor function
this.Name = name;
this.Loop = null;
}
Rotator.prototype.someMethod = function() {
//method code
}
var rotator1 = new Rotator('foo');
var rotator2 = new Rotator('bar');
使用此结构的原因是为了防止每次实例化类时重构方法。通过将方法应用于原型,它们将在类的所有实例之间共享。
我发现这是JavaScript类定义的一些基础知识的有用参考: 3 Ways to Define a JavaScript Class