《JavaScript语言精粹》读书笔记——给类型增加方法一节的疑问

     最近,在学习《JavaScript语言精粹》这本书,发现译者虽然有很好地翻译文章,却没有对文中有疑问的地方进行改正或加以注释。我接触JavaScript只有一年左右,可能无法很好的理解这门语言,而今天,读到第四章中4.7节——给类型增加方法时遇到了疑问之处:

     文中给出了对类型增加方法的示例:

Function.prototype.method = function (name, func) {

      this.prototype[name] = func;

      return this;

};

     这里的示例似乎像是一个”公式“,而接下来的两个具体例子给读者显示了另一种写法:

Number.method('integer', function() {                     //提取数字中的整数部分

      return Math[this < 0 ? 'ceiling' : 'floor' ](this);

});

 

document.writeln((10/3).integer());    //-3

 

String.method('trim',function() {                             //移除字符串末端空白

      return this.replace(/^/s+|/s+$/g, '');

});

 

document.writeln('"" + "    neat   ".trim() + '"');

 

      好吧,我姑且认为这种写法也是可以的。但是,当我把上面两个示例在FireFox中运行时却报”Number.method is not a function“错误,难道这个写法不对?我又用第一种方式重写这两个方法,确得到了”missing formal parameter“错误,我在这里糊涂了,于是在网上google了一下,发现多数有此错误的问题都是因为他们在function的参数里用了var,这和我这里的情况大相径庭,我只好搜索”JavaScript 给类型增加方法“,发现别人都是用以下写法:

Function.prototype.method=function() { func; return this }

      另外,我发现Math中根本没有ceiling方法,这里可能是作者的笔误吧。将上面的方法改写成:

Number.prototype.integer=function(){
 
       return Math[this < 0 ? 'ceil' : 'floor'](this);

};
   
 String.prototype.trim=function(){

       return this.replace(/^/S+|/s$/g,'');

};

      终于,结果正确了,但我却糊涂了,为什么书中要用不能运行的示例来解释4.7节的文字呢,还是说这只是一种表述方式,可以帮助读者理解?可是,用能运行的示例不是更好吗?

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值