Приватные методы
Добрый день, сразу скажу что новичок, у меня вот такой вопрос, как мне получить метод "пуш" из вне функции. Хорошим ответом так же сочту ссылку на литературу или статью, правда читал, но все равно не разобрался.
function Model() { var db = mongoDB(); this.push = db.push(); // такой вызов не работает, пуш нет свойства или неопределена function mongoDB() { var push = function() { console.log('push to mongoDB') }; } } var model = new Model(); model.push(); // ожидаю увидеть "push to mongoDB" |
Сделал такой вариант
function mongoDB() { return { push : function() { console.log('push to mongoDB') } }; } будет ли он верным? |
var Model = new function() { var db; this.setDB = function(val) { db = val; } this.getDB = function() { alert(db); } } Model.setDB("fffff"); Model.getDB(); |
в рамках ответа на вопрос "как мне получить push извне", да такой вариант будет верным. в чём вы сами могли бы убедиться.
в рамках же вопроса "зачем нужен этот говнокод", возможно ответ будет другим. |
vasa_c,
:lol: |
Идея заключается в том, если мы перейдем на другую БД, то вместо переписывать всю модель, мы в переменную db = mongoDB() , просто поставим другую функцию, к примеру mySQL();
Модель имеет свойство push() , но как он будет реализован, будет описываться в каждой функции по разному, в зависимости с какой БД работаем |
Цитата:
function Model() { var db = mongoDB(); this.push = db; function mongoDB() { return function() { console.log('push to mongoDB'); }; } } var a = new Model(); a.push(); |
function Model() { this.db = new MongoDB(); }; function MongoDB() { //... }; MongoDB.prototype.push = function() { console.log('push to mongoDB'); }; var model = new Model(); model.db.push(); |
var Model = new function() { var db; function mongoDB() { // что-то делаем с mongoDB db = 'connecting to mongoDB...'; } function mySQL() { // что-то делаем с mySQL db = 'now connect to mySQL'; } this.push = function(val) { if (val == 'mongoDB') mongoDB(); if (val == 'mySQL') mySQL(); alert(db); } } Model.push('mySQL'); Model.push('mongoDB'); |
Часовой пояс GMT +3, время: 23:11. |