Ваш код работает нормально, но недостаточно эффективно, поскольку он дает каждому экземпляру функцию getInfo
. Этого можно избежать. Вы можете использовать следующие шаблоны для имитации классов в JS.
Базовая модель
Чтобы смоделировать свойство / метод класса , вы устанавливаете свойства / метод в функции конструктора.
function Apple() {};
Apple.classProperty = some_value;
Apple.classMethod = some_method;
Чтобы смоделировать свойство экземпляра , вы устанавливаете внутри функций конструктора (как вы это делали в своем коде):
function Apple() {
this.property = some_instance_value;
};
Чтобы смоделировать метод экземпляра , вы настраиваете функции в Constructor.prototype
, которые будут общими для всех его экземпляров
function Apple() {};
Apple.prototype.instanceMethod = function () {...};
Расширенный шаблон
Если вы хотите установить приватный / привилегированный метод, Крокфорд предлагает очень полезные шаблоны.
Частный метод - доступен только для конструктора:
function Constructor(...) {
var that = this;
var membername = value;
function membername(...) {...}
}
Привилегированный метод - может получить доступ к частному методу и доступен для общественности:
function Constructor(...) {
this.membername = function (...) {...};
}