Почему работает такая конструкция
var str = "(096)99::00:775";
var str2 = str
.replace("::", "-")
.replace(":", "-");
alert(str2);
Смущают меня строки 2, 3 и 4. Где можно прочитать про то, почему это работает и увидеть ещё какие-нибудь "штучки" наподобие этого? P.S. мне это чем-то напоминает инструкцию with |
Причем тут with? replace - метод объекта String.
А дальше: Обыкновенный chaining (цепочка вызовов). https://learn.javascript.ru/object-m...B2%D0%BE%D0%B2 |
Цитата:
|
По сабжу.
вот вам наглядный пример, как это работает
someObject = {
a: 1,
firstStep: function(){this.a++; return this},
secondStep: function(){this.a++; return this}
}
alert(someObject.firstStep().secondStep().a)
тут вы явно пропихиваете контекст через возвраты. С with было бы так
someObject = {
a: 1,
firstStep: function(){this.a++},
secondStep: function(){this.a++}
}
with(someObject) firstStep(), secondStep(), alert(a)
|
googlecallback,
Спс |
Keramet,
Только один нюанс. В Вашем примере мы имеем дело с возвратом нового объекта, там данные не мутируют. Точней ваш случай можо проилюстрировать вот этим примером
someObject = function(value){
this.value = value
}
someObject.prototype.add = function(n){return new someObject(this.value + n)}
alert( new someObject(1).add(1).add(2).value)
т.e. тот же самый принцип, только ничего не меняем. эдакая монада. |
| Часовой пояс GMT +3, время: 09:08. |