实例:JavaScript中的方法参数

下面的 JavaScript 程序是个方法参数的示例:

Code
var testCase = {
    changeStr:
function(str) {
        str
= 'welcome to changeStr function.';
    },
    run:
function(str) {
       
this.changeStr(str);
        console.log(str);
    }
};
testCase.run('1234');

 

在 changeStr() 方法中的参量是 str 。而在 run() 方法中含有 this.changeStr(str); ,其中的参数 str 在 testCase.run(‘1234’); 执行时为该值(即1234),虽然在changeStr()方法内str被赋了值为'welcome to changeStr function.',但是对run()方法的参数str而言,str的值还是1234。只不过,两个方法参数都叫str,同名而已。让人会产生混淆的错觉。最后是调用的testCase对象中的run()方法,所以,程序执行的结果是'1234’。
那么,如何通过changeStr()方法来改变run()方法参数str的值呢?接着看下面的代码:

Code
var testCase = {
    changeStr:
function(str) {
       
return str = 'welcome to changeStr function.';
    },
    run:
function(str) {
        str
= this.changeStr(str);
        console.log(str);
    }
};
testCase.run(
'1234');

str = this.changeStr(str) 将changeStr方法返回的值赋给了str变量,str原来的值 1234 被新的值给引用关联了,所以结果是 'welcome to changeStr function.'。其实,代码可这么写更清楚明了点:

Code

那为什么前面要在changeStr()方法中写个str参数是做什么呢?答案是:混淆“扮猪吃老虎”让你产生错觉而已了。

方法参数,形式上的而已,而在调用该方法时参数才是真正的值。参数传到方法内后的值是怎么处理的在方法的外面不用管,因为该怎么处理就怎么处理嘛。而方法内的过程与方法取的名称是相关的,方法名称代表着这个方法的含意(means)。话说回来,JavaScript 方法参数是伪对象,同名方法的参数个数不同产生方法重载。但本贴文略过不谈,请详见《精通JavaScript》。

posted on 2008-12-10 21:28  豆豆の爸爸  阅读(2312)  评论(1编辑  收藏  举报