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呢?
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));
<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>
8楼的回帖只考虑了var dream=arguments.length==0?23 : arguments[0];
就是只考虑了无参数和一个参数的情况。实际上你还可以衍生出更多参数的处理办法
obj.getAge=function(){}
obj.getAge=function(addYear){}
楼主应该这么去理解:obj是个对象,而getAge是这个对象的属性,只不过这个属性比较特殊点,它存储的是一个函数的引用(也就是地址),所以getAge也叫obj对象的方法,既然getAge存的是引用,那么当你第二次给getAge赋值时,其实是改变了它所存储的地址,那getAge肯定就指向了你第二次赋给它的地址所代表的函数了,也就是说这时getAge已经与你第一个不带参的函数没一点关系了。