небольшой вопрос по ООП
я понимаю что на данный вопрос можно найти ответ в какой нибудь большой статье про ооп но уже голова не вариант больше 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+')'); |
Цитата:
|
Цитата:
function a() { alert(arguments.callee.x); } a.x = 5; a.y = 12; a(); |
Цитата:
Навскидку: Метод передачи функции - по значению ByVal и по ссылке ByRef А из свойств так навскидку могу сказать, что функция по своим свойствам может быть обязательной (по умолчанию) либо необязательной (Optional). Это вечный холивар, декларация пользовательских функций, либо создание классов. Один фиг ИМХО, кто как привык,так и работает. |
Часовой пояс GMT +3, время: 02:03. |