一个对象方法可以定义多次吗?

Dream_JavaWorld 2009-09-12 11:04:58

var obj=new Object();
obj.age=32;
obj.name='dream';

obj.getAge=function(){
document.write(arguments[0]);
return obj.age+23;
}
obj.getAge=function(addYear){
document.write(arguments[0]);
return obj.age+addYear;
}
document.write(obj.getAge());
document.write(obj.getAge(40));
请帮我分析一下结果,为什么是undefinedNaN4072呢?
...全文
144 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
喊我满哥 2009-09-12
  • 打赏
  • 举报
回复
学习了,受益匪浅!!!
Trinx 2009-09-12
  • 打赏
  • 举报
回复
var obj=new Object();
obj.getAge=function(){}
obj.getAge=function(addYear){}
楼主应该这么去理解:obj是个对象,而getAge是这个对象的属性,只不过这个属性比较特殊点,它存储的是一个函数的引用(也就是地址),所以getAge也叫obj对象的方法,既然getAge存的是引用,那么当你第二次给getAge赋值时,其实是改变了它所存储的地址,那getAge肯定就指向了你第二次赋给它的地址所代表的函数了,也就是说这时getAge已经与你第一个不带参的函数没一点关系了。
toury 2009-09-12
  • 打赏
  • 举报
回复
你的这个需求只要考虑参数长度问题就可以了
8楼的回帖只考虑了var dream=arguments.length==0?23 : arguments[0];
就是只考虑了无参数和一个参数的情况。实际上你还可以衍生出更多参数的处理办法
toury 2009-09-12
  • 打赏
  • 举报
回复

<script type="text/javascript">
var obj=new Object();
obj.age=32;
obj.name='dream';

obj.getAge=function(){
var dream=arguments.length==0?23 : arguments[0];
return obj.age+dream;
}

document.write(obj.getAge()+"<br>");
document.write(obj.getAge(40));

</script>

Dream_JavaWorld 2009-09-12
  • 打赏
  • 举报
回复
我知道了谢谢!!!!!
Dream_JavaWorld 2009-09-12
  • 打赏
  • 举报
回复
我要知道结果为什么是那样的,讲讲运行过程??????????????
shenzhenNBA 2009-09-12
  • 打赏
  • 举报
回复
后面定义的函数(方法)会覆盖前面同名的函数(方法)
shenzhenNBA 2009-09-12
  • 打赏
  • 举报
回复
后面的方法会覆盖前面的方法
li1229363 2009-09-12
  • 打赏
  • 举报
回复
忘记说了,不管你定义了几个参数都一样,JS只按照函数名来确认
li1229363 2009-09-12
  • 打赏
  • 举报
回复
在JS中,会按照最后一个定义来确认的说。

也就是说,如果你定义了两个function a,那么,前面的那个被你后面定义的给覆盖了。
BeenZ 2009-09-12
  • 打赏
  • 举报
回复
这种在java里叫做重载,在js里是不行的,默认后面吧前面方法给替换掉了.js里用参数来判断

var obj=new Object();
obj.age=32;
obj.name='dream';

obj.getAge=function(addYear){
document.write(arguments[0]);
if(addYear) return obj.age+addYear;
else return obj.age+23;
}

document.write(obj.getAge());
document.write(obj.getAge(40));

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧