为了账号安全,请及时绑定邮箱和手机立即绑定

新建构造器函数实现内建String方法和属性

新建构造器函数实现内建String方法和属性

亚努人 2016-02-15 18:29:11
在String()构造器不存在的情况下自定义一个MyString()函数,实现如下内建String()方法和属性:var s = new MyString(“hello”); s.length;  //5 s[0];  //"h" s.toString();  //"hello" s.charAt(1);  //"e" s.charAt("e");  //"h"  (这个是怎么来的???) s.slice(0,-1);  //"hell" s.split("e");  //["h","llo"] s.reverse();  //"olleh" 题目提示用把字符串当做数组用for循环遍历,(但是用for循环不就会用到“.length”属性了吗?)请教大家,谢谢!
查看完整描述

2 回答

?
天启之魂

TA贡献174条经验 获得超85个赞

for循环也需要使用.length属性,foreach就不需要了

查看完整回答
1 反对 回复 2016-02-15
?
亚努人

TA贡献58条经验 获得超75个赞

var MyString = function(str){
  var list = [];
  for(var i in str){
    list[i] = str[i];
  }
  
  list.toString = function(){
    var str = "";
    for(var a=0;a<list.length;a++){
      str = str+list[a];
    }
    return str;
  };
    
  list.valueOf = function(){
    var str = "";
    for(var a=0;a<list.length;a++){
      str = str+list[a];
    }
    return str;
  };
  
  /*list.charAt = function(index){
    return list[index];
  };*/
  
  list.concat = function(st){
    return str+st;
  };
  
  list.slice = function(min,max){
    if(min<max){
      s = "";
      for(var m=min;m<max;m++){
        s += str[m];
      }
      return s;
    }else if(max<0){
      s = "";
      for(var m=min;m<max+str.length;m++){
        s += str[m];
      }
      return s;
    }else{
      return "error";
    }
  };
  
  list.reverse = function(){
    arr = [];
    for(var i in str){
      arr[i] = str[i];
    }
    arr = arr.reverse();
    s = "";
    for(var i=0;i<arr.length;i++){
      s += arr[i];   
    }
    return s;
  }
  
  list.split = function(s){ 
    arr = [];
    s_str = "";
    var a = 0;
    for(var i in str){      
      if(str[i] === s){
        arr[a] = s_str;
        a++;
        s_str = "";
      }else{
        s_str += str[i];
        continue;
      }      
    }
    arr[a] = s_str;   
    return arr;
  }  
  return list;
};

var s = MyString("Hello");
s.split("e");

这道题我的代码如上,但是charAt("e")却不能通过,请大家再帮忙想想,有没有其他方法,或者帮忙检查下我的代码还需修改的地方,在不改变题目原意的情况下,有没有更好的代码,谢谢!

查看完整回答
反对 回复 2016-02-16
  • 彩色积木
    彩色积木
    list.toString方法可以访问到传入的参数str,是不是可以考虑直接返回str 不用将数组又转成字符串呢?
  • 2 回答
  • 0 关注
  • 1933 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信