Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.01.2016, 14:16
Новичок на форуме
Отправить личное сообщение для PashaKastyi Посмотреть профиль Найти все сообщения от PashaKastyi
 
Регистрация: 12.01.2016
Сообщений: 3

Приватные методы
Добрый день, сразу скажу что новичок, у меня вот такой вопрос, как мне получить метод "пуш" из вне функции. Хорошим ответом так же сочту ссылку на литературу или статью, правда читал, но все равно не разобрался.
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"
Ответить с цитированием
  #2 (permalink)  
Старый 12.01.2016, 14:25
Новичок на форуме
Отправить личное сообщение для PashaKastyi Посмотреть профиль Найти все сообщения от PashaKastyi
 
Регистрация: 12.01.2016
Сообщений: 3

Сделал такой вариант
function mongoDB() {

        return {
 push : function() {

            console.log('push to mongoDB')
                 }
        };

    }

будет ли он верным?
Ответить с цитированием
  #3 (permalink)  
Старый 12.01.2016, 14:44
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

var Model = new function() {
		var db;
		this.setDB = function(val) {
			db = val;
		}
		this.getDB = function()	{
			alert(db); 
		}
	}
	
	Model.setDB("fffff");
	Model.getDB();
Ответить с цитированием
  #4 (permalink)  
Старый 12.01.2016, 14:45
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

в рамках ответа на вопрос "как мне получить push извне", да такой вариант будет верным. в чём вы сами могли бы убедиться.

в рамках же вопроса "зачем нужен этот говнокод", возможно ответ будет другим.
Ответить с цитированием
  #5 (permalink)  
Старый 12.01.2016, 14:52
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

vasa_c,
Ответить с цитированием
  #6 (permalink)  
Старый 12.01.2016, 15:14
Новичок на форуме
Отправить личное сообщение для PashaKastyi Посмотреть профиль Найти все сообщения от PashaKastyi
 
Регистрация: 12.01.2016
Сообщений: 3

Идея заключается в том, если мы перейдем на другую БД, то вместо переписывать всю модель, мы в переменную db = mongoDB() , просто поставим другую функцию, к примеру mySQL();
Модель имеет свойство push() , но как он будет реализован, будет описываться в каждой функции по разному, в зависимости с какой БД работаем
Ответить с цитированием
  #7 (permalink)  
Старый 12.01.2016, 15:49
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Сообщение от PashaKastyi Посмотреть сообщение
Добрый день, сразу скажу что новичок, у меня вот такой вопрос, как мне получить метод "пуш" из вне функции. Хорошим ответом так же сочту ссылку на литературу или статью, правда читал, но все равно не разобрался.
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 Model() {
  var db = mongoDB();
  this.push = db;

  function mongoDB() {
    return function() {
      console.log('push to mongoDB');
    };
  }
}

var a = new Model();
a.push();
Ответить с цитированием
  #8 (permalink)  
Старый 12.01.2016, 15:53
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

function Model() {
   this.db = new MongoDB();
};

function MongoDB() {
   //...
};
MongoDB.prototype.push = function() {
   console.log('push to mongoDB');
};


var model = new Model();
model.db.push();
Ответить с цитированием
  #9 (permalink)  
Старый 12.01.2016, 15:55
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

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');
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[общий вопрос] Есть-ли методы держать html и js отдельно друг от друга? wayzer Элементы интерфейса 7 21.02.2015 00:39
Методы борьбы с накрутчиками в рекламных сетях Undrew Элементы интерфейса 0 05.10.2013 17:12
Публичные методы класса _axl Общие вопросы Javascript 4 17.07.2013 17:32
Как к объектам полученными jquery применить стандартные методы javascript? klauddl jQuery 4 14.09.2011 09:26
Как различить методы и свойства? возжаждавший Элементы интерфейса 59 12.04.2010 08:33