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