Особенности языка JavaScript и его использования
Использование функции в JavaScript Имя функции используется как имя переменной. Только оно имеет особое значение – функцию Определение функции просто присваивает переменной значение- функцию Допустимая программа: function f() {} tmp = f; f=1; … f=tmp;
Создание объектов в JavaScript Любая функция может быть использована как конструктор: function Dog() {} d = new Dog(); Типичный конструктор: function Dog(name) { this.name = name; }
Поля экземпляров Для любого объекта можно добавлять поля: function Dog(name) { this.name = name; } d1 = new Dog('Шарик'); d1.voice='Гав'; d2 = new Dog('Бобик'); d2.voice='Тяв'; Поля могут быть функциями (т.е. это методы): d1.cry=function(){alert('Гав');} d1.cry(); d2.cry=function(){alert('Тяв');} d2.cry();
Поля экземпляров Определение метода в конструкторе: function Dog(name,voice) { this.name = name; this.voice = voice; this.cry = function(){alert(voice);} } d1 = new Dog('Шарик','Гав'); d2 = new Dog('Бобик','Тяв'); d1.cry(); d2.cry();
Поля прототипов объектов Dog.prototype.cry = function(){alert(this.voice);} Dog.prototype.species='dog'; function Dog(name) { this.name = name; } d1 = new Dog('Шарик'); d1.voice='Гав'; d2 = new Dog('Бобик'); d2.voice='Тяв'; d1.cry(); d2.cry();
Поля классов Dog.prototype.english=function(){return 'dog '+this.name;} Dog.russian=function(d){return 'собака '+d.name;} function Dog(name) { this.name = name; } d = new Dog('Шарик'); alert(d.english()); alert(Dog.russian(d)); for(i in d) { alert(i); }
Расширение существующих классов String.prototype.reverse = function(){ var out = ''; for(var i=this.length-1; i>=0; i--){ out+=this.substr(i, 1); } return out; } alert('abc'.reverse());