Если методы и свойства объектов повторяются на разных объектах, то можно использовать прототипы для минимизации кода. Вот пример.
Main.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>main</title> </head> <body> <button id="JustClick">JustClick</button> <button id="Check Redefined Method">Check Redefined Method</button> <script src="EventHandler.js"></script> <hr> <div id="mydiv"> </div> </body> </html> |
EventHandler.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
/** * @author Stas */ //Стандартный конструктор объекта function Dog(name,breed,weight){ this.name=name; this.breed=breed; this.weight=weight; } //Создаем прототип Dog.prototype.species='Canine'; // Объявили свойство //Теперь у всех объектов, созданных конструтором Dog будет это свойство //Далее создаем методы Dog.prototype.bark=function(){ if (this.weight>25){ alert(this.name+'says WOOF'); } else{ alert(this.name+'says YIP'); } }; Dog.prototype.run=function(){ alert('Running.....'); }; Dog.prototype.wag=function(){alert('wag');}; // Создадим экземпляр объекта и проверим его свойства и методы var fido=new Dog('Fido','Mixed',38); // Глобальная переменная. function result(){ fido.run(); //Очистим div document.getElementById('mydiv').innerHTML=''; //Перечислим свойства и методы for (var prop in fido){ document.getElementById('mydiv').innerHTML= document.getElementById('mydiv').innerHTML+ prop+':'+fido[prop]+'<br>'; } } //Как переопределить метод? function RedefineMethod(){ fido.run=function(){alert('Now i am running in the different method');}; result(); fido.run(); } //Далее присваиваем обработчики document.getElementById('JustClick').onclick=result; document.getElementById('Check Redefined Method').onclick=RedefineMethod; |