Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 22.08.2011, 19:43
Интересующийся
Отправить личное сообщение для yambbkru Посмотреть профиль Найти все сообщения от yambbkru
 
Регистрация: 22.08.2011
Сообщений: 28

Народ, помогите пожалуйста! Наверняка опытные программисты сталкивались с таким. Если нужно я могу уточнить вопрос...
Ответить с цитированием
  #12 (permalink)  
Старый 22.08.2011, 20:56
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

yambbkru,
Создай объект, создай у объекта нужные свойства и методы.
А что должен делать скрипт?
Ответить с цитированием
  #13 (permalink)  
Старый 22.08.2011, 21:54
Интересующийся
Отправить личное сообщение для yambbkru Посмотреть профиль Найти все сообщения от yambbkru
 
Регистрация: 22.08.2011
Сообщений: 28

Да этот скрипт - выдуманный. Я его придумала только для того, что бы научится. Я вроде немного разобралась. Если я создаю объект вот так:
function C(a){with (C) {
				first = a.b;
				second = "Вторая кнопка";			
				firstBut = function() {$("#doc").append('<input type="button" value="'+first+'" onclick="secondBut()">');}
				secondBut = function() {$("#doc").append('<input type="button" value="'+second+'" onclick="ok()">');}
				ok = function() {alert("ОК!");}
				firstBut();
			}};
			$().ready(function() {new C({b:"Первая кнопка"});});

то, все работает так же, как и процедурным способом. Буду пока так делать...
Ответить с цитированием
  #14 (permalink)  
Старый 22.08.2011, 21:58
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

Женщина, все скрипты выдумываются мозгом. Объясни, что он должен делать.
Ответить с цитированием
  #15 (permalink)  
Старый 23.08.2011, 00:30
Аватар для kadabrik
Кандидат Javascript-наук
Отправить личное сообщение для kadabrik Посмотреть профиль Найти все сообщения от kadabrik
 
Регистрация: 10.12.2010
Сообщений: 114

Не самый удачный выбран пример. Как я понял нужно что-то типа этого:
function MyWTFObject()
{
  this.$obj = $('<div id="my-wtf-object" style="border:1px solid green"></div>').appendTo('body');
  this.$firstButton = new Object();
  this.$secondButton = new Object();
  this.createFirstButton();
}

MyWTFObject.prototype.createFirstButton = function()
{
  var obj = this;
  this.firstButton = $('<input type="button" value="first-button"/>')
                        .appendTo(this.$obj)
                        .click(function(){obj.createSecondButton()});
}

MyWTFObject.prototype.createSecondButton = function()
{
  var obj = this;
  this.firstButton = $('<input type="button" value="second-button"/>')
                        .appendTo(this.$obj)
                        .click(function(){obj.showOk()});
}

MyWTFObject.prototype.showOk = function()
{
  alert('ok');
}

/*----------------------------------------------*/
$(function()
{
  window.wtfObject = new MyWTFObject();
});

В примере используется ООП совместно с jQuery
Ответить с цитированием
  #16 (permalink)  
Старый 26.08.2011, 00:21
Интересующийся
Отправить личное сообщение для yambbkru Посмотреть профиль Найти все сообщения от yambbkru
 
Регистрация: 22.08.2011
Сообщений: 28

Я не очень поняла ваш пример! Вы можете дописать комментарии? Зачем использовать прототип? Почему просто нельзя добавить свойства и методы объекту?
Ответить с цитированием
  #17 (permalink)  
Старый 26.08.2011, 00:24
Интересующийся
Отправить личное сообщение для yambbkru Посмотреть профиль Найти все сообщения от yambbkru
 
Регистрация: 22.08.2011
Сообщений: 28

Для того, кто спрашивал что делает скрипт: мой выдуманный скрипт должен при запуске показывать кнопку, при нажатии на которую появляется еще одна кнопка, при нажатии на которую выскакивает сообщение ОК!
Ответить с цитированием
  #18 (permalink)  
Старый 26.08.2011, 00:47
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

вот запускаемый скрипт - пример
<body> </body>

<script>
/* создает кнопку с указанным html и обработчиком клика  */
function Button( html, handler ){
    var a = document.createElement('button');
    a.innerHTML = html;
    a.onclick = handler;
    return a;
};

// когза страница загрузится, отобразим первую кнопку
window.onload = function(){

    // не знаю, зачем, но я их сохраняю
    var firstB,secondB;
    
    firstB = new Button("первая", function(){

        secondB = new Button("вторая", function(){
            alert("OK");
        });

        // добавляем её туда же,куда и первую
        firstB.parentNode.appendChild( secondB );
    });

    // добавляем первую кнопку в <body>
    document.body.appendChild( firstB );
};
</script>


это тот же код, но разноцветный.

/* создает кнопку с указанным html и обработчиком клика  */
function Button( html, handler ){
    var a = document.createElement('button');
    a.innerHTML = html;
    a.onclick = handler;
    return a;
};

// когза страница загрузится, отобразим первую кнопку
window.onload = function(){
    
    var firstB,secondB;
    
    firstB = new Button("первая", function(){
        secondB = new Button("вторая", function(){
            alert("OK");
        });
        // добавляем её туда же,куда и первую
        firstB.parentNode.appendChild( secondB );
    });
    // добавляемпервую кнопку в <body>
    document.body.appendChild( firstB );
};


использовать Button можно было и без new, но тут эти три буквы добавляют к читаемости кода

Последний раз редактировалось melky, 26.08.2011 в 00:50.
Ответить с цитированием
  #19 (permalink)  
Старый 26.08.2011, 01:16
Интересующийся
Отправить личное сообщение для yambbkru Посмотреть профиль Найти все сообщения от yambbkru
 
Регистрация: 22.08.2011
Сообщений: 28

Спасибо большое! Этот пример мне более понятен. Он больше похож на программирование в Делфи: каждая кнопка - объект и все они часть другого объекта - всего документа.
Ответить с цитированием
  #20 (permalink)  
Старый 26.08.2011, 01:32
Аватар для kadabrik
Кандидат Javascript-наук
Отправить личное сообщение для kadabrik Посмотреть профиль Найти все сообщения от kadabrik
 
Регистрация: 10.12.2010
Сообщений: 114

Сообщение от yambbkru Посмотреть сообщение
Я не очень поняла ваш пример! Вы можете дописать комментарии?
//конструктор объекта-прототипа котрый будет всем рулить
function MyWTFObject()
{
  //создаем контейнер в который все будет отрисовываться
  this.$obj = $('<div id="my-wtf-object" style="border:1px solid green"></div>').appendTo('body');
  
  //объявим что у объекта есть два свойства - это первая и вторая кнопка соответственно
  this.$firstButton = new Object();
  this.$secondButton = new Object();
  
  //создадим первую кнопку
  this.createFirstButton();
}

//метод создает первую кнопку
MyWTFObject.prototype.createFirstButton = function()
{
  var obj = this;//переменная obj теперь ссылается на this который в данном контексте ссылается на сам объект (см замыкания)

  //создаем кнопку и сохраняем ссылку на нее в соответствующем свойстве объекта
  this.firstButton = $('<input type="button" value="first-button"/>')
                        .appendTo(this.$obj)//отрисовываем кнопку в контейнер
                        .click(function(){obj.createSecondButton()});//вешаем событие на клик по кнопке, так как указатель this в этом месте не ссылается на текущий объект то используем для доступа к текущему объекту ранее созданную переменную obj 
}

//метод создает вторую кнопку
MyWTFObject.prototype.createSecondButton = function()
{
  var obj = this;
  this.firstButton = $('<input type="button" value="second-button"/>')
                        .appendTo(this.$obj)
                        .click(function(){obj.showOk()});
}

//метод аллертует "ok"
MyWTFObject.prototype.showOk = function()
{
  alert('ok');
}

/*----------------------------------------------*/
$(function()
{
  //зоздаем экземпляр в глобальной области видимости(т.е. просто делаем его свойством window)
  window.wtfObject = new MyWTFObject();
});


Сообщение от yambbkru Посмотреть сообщение
Зачем использовать прототип? Почему просто нельзя добавить свойства и методы объекту?
Потому что это будет уже не ООП.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с созданием обменного пункта dikabraz Работа 2 23.04.2011 22:17
Помогите чайнику определить местоположение объекта maydep Общие вопросы Javascript 4 02.11.2010 09:17
Пожалуйста, помогите с созданием скрипта! Елизавета Общие вопросы Javascript 10 08.06.2010 13:20
Помогите!!! Из нового окна вызвать функцию ignavr Элементы интерфейса 5 13.12.2009 13:04
помогите с положением свободно позиционируемого объекта Newgen Элементы интерфейса 16 28.07.2009 09:41