небольшой вопрос по ООП
я понимаю что на данный вопрос можно найти ответ в какой нибудь большой статье про ооп но уже голова не вариант больше 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, время: 10:02. |