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


    Javascript中可以对所传参数在函数内进行修改,如下

    function func1(name) {
    	name = 'lily';
    	alert(name);
    }
    func1('jack');//输出lily
    

    再看一个例子

    function fun1(n) {
        this.name = n;
    }
    function fun2(name) {
        fun1.call(this,'lily');
        alert(name);
    }
    fun2("jack");//输出"jack"
    

    fun1函数想把fun2调用时的参数修改为“lily”,但没有成功。弹出的仍然是“jack”。思考下为什么?

    实际上fun1还是有能力把fun2调用时的参数给修改掉的,利用caller属性

    function fun1() {
        arguments.callee.caller.arguments[0] = 'lily';
    }
    function fun2(name) {
        fun1.call(this,name);
        alert(name);
    }
    fun2("jack");//输出"lily" 

    可见,外层函数对于内层函数的调用栈是可见的,可修改的。

  • 相关阅读:
    MATLAB01
    Diffie-Hellman 密钥交换
    古典密码
    正则表达式
    装饰器初析
    进制转换的栈实现
    Log4j(异常日志)
    2018/6/6
    2018.1.1T19B3-u4
    2018.1.1T19-B3-U3jiangyi
  • 原文地址:https://www.cnblogs.com/snandy/p/1966345.html
Copyright © 2020-2023  润新知