Определение класса


Классы в JavaScript можно создавать очень по разному,
потому что родной контрукции class не существует.

function SimpleClass(ix,iy) {
    // Свойства
    this.x = ix
    this.y = iy
    this.z = 0
    // Методы
    this.setXY = SimpleClass_setXY;
}

function SimpleClass_setXY(ix,iy) {
    this.x = ix
    this.y = iy
}

var obj = new SimpleClass(2,3);

Еще один вариант - через прототипы:

function NewClass() {  }

// Свойство
NewClass.prototype.x = 0;

// Метод
NewClass.prototype.getX = function() {
  return this.x;
}

var obj = new NewClass();
alert( obj.getX() );

И еще один вариант - наиболее близкий к привычному пониманию классов:

// Конструктор
function GeneratorClass() {
    // Свойство
    this.x = 1;
    // Метод
    this.generate = function(n) {
        var s = this.x;
        this.x += n;
        return s;
    }
}

var obj = new GeneratorClass();
alert( obj.generate() );

Можно также сделать именованный конструктор:

var SimpleClass = function() {
    this.x = 0;
    this.setX = function(i) { this.x = i; }
    this.getX = function() { return this.x; }
}

var obj = new SimpleClass();

Существует также экзотическая возможность делать экземпляры
классов без самих классов, т.е. формировать какие-либо штучные объекты:

var obj = {
    'x' : 0,
    'getX' : function() { return this.x; }
    'setX' : function(i) { this.x = i; }
};