Здесь вы должны понимать наследование на основе прототипов.
var Manager = function() {
this.user = [];
}
var manager = new Manager();
Эти линии будут определять Manager
функцию конструктора и создать новый объект. При вызове new Manager()
, что случается:
новый, пустой, объект создается: {}
.
код внутри конструктора будет запущен с новым, пустым объектом, являющимся значением this
. Таким образом, он будет устанавливать свойство user
нового объекта ({}
) как пустой массив.
Свойство нового объекта будет установлено в значение Manager.prototype. Итак, это происходит, если вы не видите: manager.__proto__ = Manager.prototype
.
Затем вы хотите определить новые методы на объектах прототипа, используя наследование. Имейте в виду, что прототип представляет собой простой объект JS. Не конструктор, а объект. Таким образом, каждый объект, созданный из функции Manager
, будет обладать свойством __proto__
, установленным на тем же самым объектом.
Затем вы начинаете определять новые методы на объекте прототипа, например, функцию filters
. Когда вы, позднее, позвоните по телефону manager.filters()
, он сначала найдет свои свойства для функции filters
и не найдет его. Итак, тогда он пойдет на свои свойства прототипа, и там, если найдет его. manager
затем запустит функцию filters
, которая была определена на прототипе, но сама использует (manager
) как контекст, как this
внутри функции.
Таким образом, чтобы использовать user
свойство внутри функции filters
, все, что вам нужно сделать, это:
Manager.prototype.filters = function() {
this.user = ...;
}
Manager.prototype.filters_main = function() {
this.user = ...;
}
и вы будете манипулировать же user
свойство определено, когда объект был построен.
Поместите его в тело: 'function Manager() {this.user = [];' –
Между Manager.prototype. ...? А что я должен писать в прототипах? –