Не понимаю как передать this в новый объект. Если это делать из конструктора то все отлично работает а если делать через прототип то нет.
const ACCOUNT = require('./account');
function Model(dataBase, session){
this.db = dataBase;
this.session = session;
}
Model.prototype.account = new ACCOUNT(this);
Пытался сделать так:
const ACCOUNT = require('./account');
function Model(dataBase, session){
this.db = dataBase;
this.session = session;
}
Model.prototype.account = function() {
return new ACCOUNT(this);
}
Но не работает, не могу получить доступ к методам ACCOUNT.
UPDATE: Объект Account
function Account(global){
this.global = global;
}
Account.prototype.test = function(){
return this.global.session;
}
module.exports = Account;
В дальнейшем не могу получить метод test объекта Model пишет что это не функция.
let model = new ModelObj(core.db, request.session);
console.log(await model.account.test());
Во втором случае нельзя обратиться к метода Account
, просто потому, что метод
Model.prototype.account
это функция, которая возвращает новый объект Account.
А у функции нет метода test
.
То есть вызов должен быть заменен на
await model.account().test()
Либо должен заполняться внутри конструктора, если нужен доступ к конкретному объекту Model:
const ACCOUNT = require('./account');
function Model(dataBase, session){
this.db = dataBase;
this.session = session;
this.account = new ACCOUNT(this);
}
Стоит обратить внимание, что в первом случае, в качестве this
будет передан объект модуля, а не объект класса Model
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как сделать так что бы при else форма отправлялась пользователю,грубо говоря как выше отменить действие eventpreventDefault(); (return false; не работает) ?
Есть вот такая форма, при выборе к примеру "футболки" должен открыться "блок с футболками", а если выбрать "шорты", то "блок с футболками" должен...