实例:JavaScript中的方法参数

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

ContractedBlock.gif ExpandedBlockStart.gif 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的值呢?接着看下面的代码:

ContractedBlock.gif ExpandedBlockStart.gif 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.'。其实,代码可这么写更清楚明了点:

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

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

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

转载于:https://www.cnblogs.com/georgewing/archive/2008/12/10/664834.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值