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

在String() 构造器不存在的情况下自定义一个MyString()的构造器函数?

在String() 构造器不存在的情况下自定义一个MyString()的构造器函数?

geront 2016-06-18 18:29:45
由于String() 不存在,因此在写该构造器函数时不能使用任何属于内建String对象的方法和属性。并且为您创建的对象通过一下测试:>s.length; 5 >s[0]; "h" >s.toString(); "hello" >s.valueOf(); "hello" >charAt(1); "e" >charAt('2'); "l" >charAt('e'); "l">s.concat(' world');"hello world">s.slice(1.3);"el">s.slice(0,-1);"hell">s.split('e');["h","llo"]>s.split("l");["he","","o"]
查看完整描述

1 回答

?
geront

TA贡献1条经验 获得超0个赞

var MyString=function(str) {
    var list = [];
    for (var i in str) {
        list[i] = str[i];
    }
    this.list = list;
    this.toString=toString;
    this.valueOf=valueOf;
    this.charAt=charAt;
    this.concat=concat;
    this.slice=slice;
    this.split=split;
    this.reverse=reverse;
};

function toString(){
    var a_str='';
    for(var i=0;i<this.list.length;i++)
    {
        a_str+=this.list[i];
    }
    return a_str;
}
function valueOf(){
    return this.toString();
}
function charAt(n){
    var c_str='';
    c_str=this.list[n]
    return c_str;
}
function concat(ch){
    return this.toString()+ch;
}
function slice(m,n){
    var s_str='';
    if(n>0){
        for(var i=m;i<n;i++){
            s_str+=this.list[i];
        }
    }else if(n<0){
        var len=this.list.length;
        for(var i=m;i<n+len;i++){
            s_str+=this.list[i];
        }
    }
    return s_str;

}
function split(element){
    for(var i=0;i<this.list.length;i++){
        if( this.list[i]==element){
            return i;
        }
    }
    var slist=[];
    slist=this.list.split(i,1);
    return slist;
}

function reverse(){
    var re_str=this.list.reverse();
    return re_str.join('').toString();
}

var s=new MyString('hello');
s.toString();       //'hello'
s.valueOf();        //'hello'
s.charAt(2);        //'l'
s.concat(' world'); //'hello word'
s.slice(1,3);       //'el'
s.slice(0,-1);      //'hell'
s.split('e');      //"h", "l", "l", "o"
s.reverse();        //'olleh'


查看完整回答
反对 回复 2017-02-01
  • 1 回答
  • 0 关注
  • 1564 浏览
慕课专栏
更多

添加回答

举报

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