深入理解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 快速回到页首的方法
Dec 05 Javascript
JavaScript中的anchor()方法使用详解
Jun 08 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
Jan 12 Javascript
AngularJS控制器继承自另一控制器
May 09 Javascript
js和jQuery设置Opacity半透明 兼容IE6
May 24 Javascript
基于React实现表单数据的添加和删除详解
Mar 14 Javascript
详解微信第三方小程序代开发
Jun 23 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
一文了解vue-router之hash模式和history模式
May 31 Javascript
js实现for循环跳过undefined值示例
Jul 02 Javascript
解决webpack多页面内存溢出的方法示例
Oct 08 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
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
javascript操作JSON的要领总结
2012/12/09 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
python操作gmail实例
2015/01/14 Python
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python中的默认参数详解
2015/06/24 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Python jieba库分词模式实例用法
2021/01/13 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
小班上学期评语
2014/05/05 职场文书
营销与策划专业求职信
2014/06/20 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
奠基仪式致辞
2015/07/30 职场文书
Python学习之os包使用教程详解
2022/03/21 Python
js作用域及作用域链工作引擎
2022/07/07 Javascript