Показать сообщение отдельно
  #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 Посмотреть сообщение
Зачем использовать прототип? Почему просто нельзя добавить свойства и методы объекту?
Потому что это будет уже не ООП.
Ответить с цитированием