небольшой вопрос по ООП
я понимаю что на данный вопрос можно найти ответ в какой нибудь большой статье про ооп но уже голова не вариант больше 8 часов писал скрипт и голова не варит уже нашел 2 хороших статьи но уже буквы расплываюсь. Помогите пожалуста.
в чем суть проблемы : делаю для нескольких скриптов свою библеотеку , покажу проблему на примере такого кода: function mouse (e) { var x, y; if (e.pageX == "null" && e.clientX != "null") { var scrollX, scrollY, body, html; body = document.body; html = document.documentElement; scrollX = html.scrollLeft || body && body.scrollLeft || 0; scrollY = html.scrollTop || body && body.scrollTop || 0; x = e.clientX + scrollX - (html.clientLeft || body.clientLeft || 0); y = e.clientY + scrollY - (html.clientTop || body.clientTop || 0); } else { x = e.pageX; y = e.pageY; } return {x: x , y: y} } вызвав функцию так mouse(event).x я получу свойство функции x. если я напишу так var obj ={}; obj.x = function (e) {} obj.y = function (e) {} то я смогу получить доступ через вызов обьекта obj и его методов x,y я получу значение x,y. но я не хочу разделять на 2 отдельных метода возможно ли это реализовать в одном |
Цитата:
А вообще не понял, чего вы хотите. Объясните пожалуйста поподробнее |
возможно ли для функции mouse создать два метода х ,y в нутри функции?
|
Цитата:
и в данном случае это свойства объекта {x: x , y: y} а вовсе не функции |
понятненько.
а вот данный код создает обьект dragMaster с методом init ? var dragMaster = (function() { // private методы и свойства var dragObject function mouseDown(e) { клик на переносимом элементе: начать перенос } function mouseMove(e){ if (dragObject) { отобразить перенос объекта } } function mouseUp(e){ if (dragObject) { конец переноса } } // public методы и свойства return { init: function() { // инициализовать контроллер document.onmousemove = mouseMove document.onmouseup = mouseUp }, makeDraggable: function(element){ // сделать элемент переносимым element.onmousedown = mouseDown } } }()) |
Цитата:
|
все разобрался , все спс=)
|
включился мозг и появилось такое решение
var mouse ={ pos: function () { var x, y,e; e = event; if (e.pageX == "null" && e.clientX != "null") { var scrollX, scrollY, body, html; body = document.body; html = document.documentElement; scrollX = html.scrollLeft || body && body.scrollLeft || 0; scrollY = html.scrollTop || body && body.scrollTop || 0; x = e.clientX + scrollX - (html.clientLeft || body.clientLeft || 0); y = e.clientY + scrollY - (html.clientTop || body.clientTop || 0); } else { x = e.pageX; y = e.pageY; } return {x : x , y: y} }, x: function () { return mouse.pos().x; }, y: function () { return mouse.pos().y; } }; |
Цитата:
function a() { alert('a'); } a.x = 5; a.y = 12; alert('('+a.x+';'+a.y+')'); |
Цитата:
|
Часовой пояс GMT +3, время: 13:49. |