深入理解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 相关文章推荐
Dojo 学习笔记入门篇 First Dojo Example
Nov 15 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
Dec 21 Javascript
jQuery中操控hidden、disable等无值属性的方法
Jan 06 Javascript
利用原生JavaScript获取元素样式只是获取而已
Oct 08 Javascript
Eclipse配置Javascript开发环境图文教程
Jan 29 Javascript
Javascript 调用 ActionScript 的简单方法
Sep 22 Javascript
Vue.js实现文章评论和回复评论功能
May 30 Javascript
vue中计算属性(computed)、methods和watched之间的区别
Jul 27 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
django中使用vue.js的要点总结
Jul 07 Javascript
JavaScript遍历数组的方法代码实例
Jan 14 Javascript
es6函数之尾递归用法实例分析
Apr 25 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
python设置检查点简单实现代码
2014/07/01 Python
python代码制作configure文件示例
2014/07/28 Python
Python中内建函数的简单用法说明
2016/05/05 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
大学生护理专业自荐信
2013/10/03 职场文书
司机的工作范围及职责
2013/11/13 职场文书
写给学生的新学期寄语
2014/01/18 职场文书
战友聚会邀请函
2014/01/18 职场文书
人事部岗位职责范本
2014/03/05 职场文书
理财计划书
2014/08/14 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS