let v = 4 // примитив
let w = { v: 4 } // объект
function a(v) { // v передается значением
return {
b: function () {
console.log('b', v++) //4
return this
},
c: function () {
this.b() //5
return this
},
d: function (w) { // w передается ссылкой
console.log('d', w.v++) // 4
}
}
}
a(v).b().c().d(w)
console.log('-', v) // 4
console.log(w) // { v: 5 }
наверное, стоит рассмотреть и такой пример )