javascript动态方法调用与参数修改的问题

javascript中可以对传进去的参数进行修改,如下

function func1(name) {
	name = 33;
	alert(name);
}
func1();//输出33

 

如果这样呢?

 

function fun1() {
    this.name = 33;
}

function fun2(name) {
    fun1.call(this,name);
    alert(name);
}

fun2("Jack");//输出"Jack"


 

 fun2中调用fun1将name改变为33。但实际上输出的仍然是"Jack".原因是两个function的arguments是不同的。

 

但是可以修改下fun1,利用caller属性改变

 

function fun1() {
    arguments.callee.caller.arguments[0] = 33;
}

function fun2(name) {
    fun1.call(this,name);
    alert(name);
}

fun2("Jack");//输出"33"

 

这次输出的是33。所以外层的函数(fun2)对于内部调用的函数(fun1)来说,总是可见的。可以利用arguments.callee.caller取得调用函数。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值