如何将javascript对象变量转换为类

时间:2013-03-29 18:08:28

标签: javascript

如何定义我稍后可以实例化的类?

我自己写了一个使用jquery的旋转器类,看起来像:

var Rotator =
{
Loop: null,

init: function(identifierName)
    {
    ........
    }
}

如果我想在我的页面上有一个旋转器,这很好。我只是致电Rotator.init()并准备就绪。 但是当我想要3个旋转器时,我需要定义3次改变其名称的全班代码。

如果我能做的话会更容易

  Instance1 = new rotator;
  Instance2 = new rotator;
  Instance3 = new rotator;

2 个答案:

答案 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);

http://jsfiddle.net/JzWCL/

编辑后:

http://jsfiddle.net/mPzsq/

答案 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