str_rep для добавления метода всем
Здесь создаётся метод 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".
"z".rep(3)
Содержание раздела