Javascript疑问一:重载

【1】《Javascript DOM 高级程序设计》

【2】《Secrets of the Javascript Ninja》

针对重载的问题,这两本书中的解释是不一样的:

【1】中认为javascript不支持重载,认为重载实际上更像是替换。所以如果有两个函数:

1 function myFunction(a,b) {  alert(a+b); }
2 function myFunction(a) {  alert(a); }

 

 书中认为脚本在执行的时候不会顾及函数定义时的参数,而是直接使用在作用域链中最后定义的那个函数。

【2】中介绍了javascript重载的方法:

 1 var ninjas = {
 2   values: ["Dean Edwards", "Sam Stephenson", "Alex Russell"]
 3 };
 4 addMethod(ninjas, "find", function(){
 5   return this.values;
 6 });
 7 addMethod(ninjas, "find", function(name){
 8   var ret = [];
 9   for (var i = 0; i < this.values.length; i++)
10     if (this.values[i].indexOf(name) == 0)
11       ret.push(this.values[i]);
12   return ret;
13 });
14 addMethod(ninjas, "find", function(first, last){
15   var ret = [];
16   for (var i = 0; i < this.values.length; i++)
17     if (this.values[i] == (first + " " + last))
18       ret.push(this.values[i]);
19   return ret;
20 });
21 assert(ninjas.find().length == 3, "Found all ninjas");
22 assert(ninjas.find("Sam").length == 1, "Found ninja by first name");
23 assert(ninjas.find("Dean", "Edwards").length == 1, "Found ninja by first and last name");
24 assert(ninjas.find("Alex", "Russell", "Jr") == null, "Found nothing");

先把代码放在这里,搞清楚了继续写。

转载于:https://www.cnblogs.com/linne/p/3249223.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值