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

本文详细探讨了JavaScript中原型模式的使用,特别是如何为String类型动态添加方法,并通过实例解释了为何某些方法仅能通过原型链访问。同时,介绍了如何利用寄生构造函数模式解决直接在对象上添加方法的问题。
摘要由CSDN通过智能技术生成

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')) ;

 

 

 

 

 

转载于:https://www.cnblogs.com/dqmore/p/3814889.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值