Почему работает такая конструкция
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, время: 04:25. |