String,Array等原生引用对象prototype问题(打X未解决,打勾已解决)

1、2014年6月29日 10:51:44
    原型模式
      疑问一:
        String类型中,动态为其加入函数时候,可以通过String.prototype.[[functionname]] = function(){}方式或者直接string.[[functionname]] = function(){},但是遇到了一个问题,当创建一个实例时,只有前者可以运行,后者报错找不到该方法,如:var msg = 'hello world' ; msg.[[functionname]] ;  ×
         疑问二:
               直接调用String.[[functionname]]可行。×

 

     解答:疑问一:我自己试过很多次,直接以对象名添加方法只存在与该对象构造方法之外。实例化对象是无法得到该方法的。但是可以利用寄生构造函数模式来实现,不过就有点“曲线救国”的味道:

function SpecialString(msgstr){
    var msg = new String(msgstr) ;
    msg.startWith = function(text){
        return this.indexOf(text) === 0 ;
    }

    return msg ;
}

var msg = new SpecialString('hello world') ;
alert(msg.startWith('h')) ;

 

 

 

 

 

posted @ 2014-06-29 11:07  chenzsh  阅读(133)  评论(1编辑  收藏  举报