Народ, помогите пожалуйста! Наверняка опытные программисты сталкивались с таким. Если нужно я могу уточнить вопрос...
|
yambbkru,
Создай объект, создай у объекта нужные свойства и методы. А что должен делать скрипт? |
Да этот скрипт - выдуманный. Я его придумала только для того, что бы научится. Я вроде немного разобралась. Если я создаю объект вот так:
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:"Первая кнопка"});}); то, все работает так же, как и процедурным способом. Буду пока так делать... |
Женщина, все скрипты выдумываются мозгом. Объясни, что он должен делать.
|
Не самый удачный выбран пример. Как я понял нужно что-то типа этого:
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 |
Я не очень поняла ваш пример! Вы можете дописать комментарии? Зачем использовать прототип? Почему просто нельзя добавить свойства и методы объекту?
|
Для того, кто спрашивал что делает скрипт: мой выдуманный скрипт должен при запуске показывать кнопку, при нажатии на которую появляется еще одна кнопка, при нажатии на которую выскакивает сообщение ОК!
|
вот запускаемый скрипт - пример
<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, но тут эти три буквы добавляют к читаемости кода |
Спасибо большое! Этот пример мне более понятен. Он больше похож на программирование в Делфи: каждая кнопка - объект и все они часть другого объекта - всего документа.
|
Цитата:
//конструктор объекта-прототипа котрый будет всем рулить 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(); }); Цитата:
|
Часовой пояс GMT +3, время: 04:09. |