eval(readFile("Worlds_Compiled")) alert("hello") 0.fact = function() { return 1 } number.fact = function() { return this * (this - 1).fact() } 5.fact() object.printString = function() { return "an Object" } number.printString = function() { return "" + this } array.printString = function() { var r = "" for (var idx = 0; idx < this.length; idx = idx + 1) { if (idx > 0) r = r + ", " r = r + this[idx].printString() } return "[" + r + "]" } x = 5 arr = [1, 2, 3, 4] alert(arr.printString()) alert("before: x=" + x.printString() + ", arr=" + arr.printString()) try { x = 42 arr[2] = -8 alert("during: x=" + x.printString() + ", arr=" + arr.printString()) abort } else { alert("abort!") } alert("after: x=" + x.printString() + ", arr=" + arr.printString()) in new world { number.printString = function() { return "X" } alert(arr.printString()) } alert(arr.printString()) w1 = new world in w1 { arr[0] = 666 } w2 = new world in w2 { arr[0] = 333 } w1.get(arr, 0) w2.get(arr, 0) in w1 { alert(arr.printString()) } in w2 { alert(arr.printString()) } alert(arr.printString()) w1.commit() arr.printString()