Здесь создаётся метод str_rep и используется оператор String.prototype.rep = str_rep для добавления метода всем объектам String. Все объекты, созданные с помощью new String(), имеют теперь и этот метод, хотя объекты уже были созданы раньше. Затем создаётся альтернативный метод и добавляется к одному из объектов String через использование оператора s1.rep = fake_rep. Метод str_rep других String-объектов не изменяется.
var s1 = new String("a") var s2 = new String("b") var s3 = new String("c")
// Создаётся метод repeat-string-N-times для всех объектов String function str_rep(n) { var s = "", t = this.toString()
while (--n >= 0) s += t return s }
String.prototype.rep = str_rep
s1a=s1.rep(3) // возвращает "aaa" s2a=s2.rep(5) // возвращает "bbbbb"
s3a=s3.rep(2) // возвращает "cc"// Создаётся альтернативный метод и присваивается только одной String-переменной function fake_rep(n) {
return "repeat " + this + " " + n + " times." }
s1.rep = fake_rep s1b=s1.rep(1) // возвращает "repeat a 1 times." s2b=s2.rep(4) // возвращает "bbbb" s3b=s3.rep(6) // возвращает "cccccc"
Функция из этого примера работает также со String-объектами, созданными без использования конструктора String. Следующий код возвращает "zzz".