Вы можете создать функцию конструктора Block
, что-то вроде этого:
var Block = function(width, height) {
this.width = width || 50; //50 is the default
this.height = height || 50; //50 is the default
this.moveX = function(x) {
console.log("Moving by " + x);
}
};
Затем вы можете создавать новые экземпляры класса "Блок" с помощью оператора new
:
var block1 = new Block();
block1.moveX(100); //Will print "Moving by 100"
Выше будет создан новый экземпляр Block
с width
и height
из 50 (потому что мы не передали аргумент width
или height
).Чтобы создать больший Block
, вы можете сделать:
var block2 = new Block(100, 100);
Обратите внимание, что (как указано в комментариях) использование this.moveX = function
не очень эффективно.Это означает, что каждый экземпляр Block
должен иметь в памяти копию функции moveX
.Вы можете улучшить это, добавив метод moveX
к prototype
:
Block.prototype.moveX = function(x) {
console.log("Moving by " + x);
}
Таким образом, ни у одного из экземпляров Block
нет копии метода.Когда вы вызываете его, сам экземпляр проверяется, но свойство с именем moveX
не найдено, поэтому вместо него просматривается prototype
.Существует одна копия метода, совместно используемая всеми экземплярами.