var argJoin = function ()
{
  return Array.prototype.join.call(arguments, '');
}

var argSlice = function ()
{
  return Array.prototype.slice.call(arguments, 1, 3).join('');
}

var obj = {
  'a': 97,  'b': 98,  'c': 99,  'd': 100, 'e': 101,
  'f': 102, 'g': 103, 'h': 104, 'i': 105, 'j': 106,
  'length': 10
}
try{
  obj.__defineGetter__('0', function (){return this.a;});
  obj.__defineGetter__('1', function (){return this.b;});
  obj.__defineGetter__('2', function (){return this.c;});
  obj.__defineGetter__('3', function (){return this.d;});
  obj.__defineGetter__('4', function (){return this.e;});
  obj.__defineGetter__('5', function (){return this.f;});
  obj.__defineGetter__('6', function (){return this.g;});
  obj.__defineGetter__('7', function (){return this.h;});
  obj.__defineGetter__('8', function (){return this.i;});
  obj.__defineGetter__('9', function (){return this.j;});

  var objJoin = function ()
  {
    return Array.prototype.join.call(obj, '_');
  }

  var objSlice = function ()
  {
    return Array.prototype.slice.call(obj, 5, 8).join('_');
  }
}
catch (err)
{
  alert(err.message);
  var objJoin = function ()
  {
    return 'not supported';
  }
  var objSlice = function ()
  {
    return 'not supported';
  }
}


Array.prototype.slice.call(obj);

$(function (){
  $('button.argJoin').click(function(){alert(argJoin(1, 2, 3, 4, 5));});
  $('button.argSlice').click(function(){alert(argSlice(6, 7, 8, 9, 0));});
  $('button.objJoin').click(function(){alert(objJoin());});
  $('button.objSlice').click(function(){alert(objSlice());});
});