深入理解Javascript动态方法调用与参数修改的问题


Posted in Javascript onDecember 10, 2013

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"

可见,外层函数对于内层函数的调用栈是可见的,可修改的。
Javascript 相关文章推荐
jquery实现非叠加式的搜索框提示效果
Jan 07 Javascript
Eclipse去除js(JavaScript)验证错误
Feb 11 Javascript
JavaScript操作Cookie详解
Feb 28 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
node.js读取文件到字符串的方法
Jun 29 Javascript
node.js操作mysql(增删改查)
Jul 24 Javascript
简单实现异步编程promise模式
Jul 31 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
js微信分享实现代码
Oct 11 Javascript
微信小程序实现的动态设置导航栏标题功能示例
Jan 31 Javascript
微信小程序云开发之使用云数据库
May 17 Javascript
微信小程序背景音乐开发详解
Dec 12 Javascript
ExtJS的拖拽效果示例
Dec 09 #Javascript
用Javascript获取页面元素的具体位置
Dec 09 #Javascript
jQuery取得select选择的文本与值的示例
Dec 09 #Javascript
JavaScript—window对象使用示例
Dec 09 #Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
Dec 09 #Javascript
跨域传值即主页面与iframe之间互相传值
Dec 09 #Javascript
深入理解JavaScript中的传值与传引用
Dec 09 #Javascript
You might like
php处理斐波那契数列非递归方法
2012/02/04 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
JavaScript的eval JSON object问题
2009/11/15 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
浅谈ng-zorro使用心得
2018/12/03 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
Python读取图片为16进制表示简单代码
2018/01/19 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
Python对象转换为json的方法步骤
2019/04/25 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
python中取绝对值简单方法总结
2020/07/24 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
质检部岗位职责
2013/11/11 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
公司捐书倡议书
2015/04/27 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript