深入理解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 相关文章推荐
javascript 全角转换实现代码
Jul 17 Javascript
javascipt基础内容--需要注意的细节
Apr 10 Javascript
javascript 数组的定义和数组的长度
Jun 07 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 Javascript
Scala解析Json字符串的实例详解
Oct 11 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 Javascript
vue 之 css module的使用方法
Dec 04 Javascript
小程序组件之自定义顶部导航实例
Jun 12 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
Jul 21 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
vue使用swiper.js重叠轮播组建样式
Nov 14 Javascript
Javascript原生ajax请求代码实例
Feb 20 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
谈一谈收音机的高放电路
2021/03/02 无线电
自动分页的不完整解决方案
2007/01/12 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
PHP正则验证Email的方法
2015/06/15 PHP
php 可变函数使用小结
2018/06/12 PHP
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
python实现在windows下操作word的方法
2015/04/28 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
Python用threading实现多线程详解
2017/02/03 Python
python中requests小技巧
2017/05/10 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
如何基于Python批量下载音乐
2019/11/11 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
一套SQL笔试题
2016/08/14 面试题
最新远光软件笔试题面试题内容
2013/11/08 面试题
环境工程大学生自荐信
2013/10/21 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
匿名检举信范文
2015/03/02 职场文书
公司保洁员管理制度
2015/08/04 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python