Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="Representation of a custom String Object">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
var MyString = function(source){
  var arr = [];
  
  for(var index in source){
    arr.push(source[index]);
    //Public property
    this[index] = source[index];
  }
  
  //Public property
  this['length'] = arr.length;
  
  //Public getter
  this.getStringArray = function() {
    return arr;
  }
};
MyString.prototype.toString = function(){
  return this.getStringArray().join('');
};
MyString.prototype.charAt = function(i){
  return this.getStringArray()[i];
};
MyString.prototype.concat = function(source2){
  return this.toString() + source2;
};
MyString.prototype.slice = function(start, end){
  var slice = '';
  var arr = this.getStringArray();
  for(var i=start; i < end; i++){
    slice += arr[i];
  }
  return slice;
};
MyString.prototype.split = function(char){
  var pre = '', post = '', split = '';
  var arr = this.getStringArray();
  var i = 0;
  
  while(arr[i] != char){
    pre += arr[i++];
  }
  
  i++;
  while(arr[i] !== undefined){
    post += arr[i++];
  }
  
  return [pre, split, post];
};
MyString.prototype.reverse = function(){
  var arr = this.getStringArray();
  var s = '';
  for(var i = arr.length - 1; i >= 0; i--){
    s += arr[i];
  }
  
  return s;
}
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
ratpikpro
0viewers