<script type="text/javascript">
var foo = {
fooCallbacks: [],
addCallback: function(callback) {
this.fooCallbacks.push(callback);
},
doCallback: function() {
with (this) {
var i, c = fooCallbacks.length;
for (i = 0; i < c; i++) {
if (typeof fooCallbacks[i] == "function") {
fooCallbacks[i]();
}
}
}
}
};
var bar = {
barValue: 42,
callback: function() {
with (this) {
alert("Success: bar.callback was called!\n"+
"And the bar value is " + barValue);
barValue++;
}
},
callback2: function() {
with (this) {
alert("Success: bar.callback2 was called!\n"+
"And the bar value is " + barValue);
}
}
};
foo.addCallback(bar.callback.apply(bar));
foo.addCallback(bar.callback2.apply(bar));
foo.doCallback();
</script>