Immutable Factory Objects

by jzumbrun

JavaScript

function speak(){
    return {
        greeting : {
            nice: {
                english: 'Hello'
            }
        }
    }
}

var a = speak()
alert(a.greeting.nice.english)

// Add the German nice greeting
a.greeting.nice.german = 'Guten Tag'
alert(a.greeting.nice.german)

// Make a new "copy"
var b = speak()
alert(b.greeting.nice.english)
alert(b.greeting.nice.german)
// German is undefined