Javascript - это другой язык, отличный от тех, что вы изучили до сих пор. Вы не можете ожидать, что все будет работать так же, как и при смене языков.
Быстрый просмотр подхалима: в javascript вы можете назначить функцию переменной. Держу пари на этих других языках, которые вы использовали, что было невозможно:
var myCounter = 1;
var myFunction = function(x){ return x + 1; };
Возвращаясь к вашему вопросу: В JavaScript нет «реальных классов». Есть только объекты. Я знаю, что сначала это может показаться странным.
Объектная модель Javascript называется «прототипным наследованием». Он отличается от «классического» (каламбурного) наследования. И это также not very cleanly implemented.
В принципе, вы начинаете с одного приведенного набора объектов (Array, Function, Object и т. Д. - это объекты, а не классы), а затем вы используете эти объекты для сборки других. Отношения между ними могут быть «классами и экземплярами», но им это не нужно. Они могут быть и другими видами отношений.
Поскольку классов нет, вы не можете их создать. Но вы можете создать обычный объект, назначить его переменной Car, и просто подумайте: «Я собираюсь использовать этот объект для создания множества других объектов, а те другие объекты будут иметь некоторые атрибуты по умолчанию, такие как методы и прочее, так что они ведут себя как автомобили ». И язык позволяет вам это делать. Автомобиль будет вести себя как класс на других языках, а объекты, которые он производит, будут «как экземпляры автомобиля».
К javascript, однако, они будут выглядеть как объекты с некоторыми отношениями между ними.
В некотором роде прототипное наследование является «надмножеством» классического наследования. Вы можете делать классическое наследование, но и другие вещи.
Возможный дубликат [Разница между конструктором и объектом] (http://stackoverflow.com/questions/4559207/difference-between-a-constructor-and-an-object) – qwertymk
, но это не разрушает целое точка ООП? –
кстати. вам не хватает нового в вашем заявлении 'var Block = ...' –