深入理解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 相关文章推荐
非常漂亮的JS代码经典广告
Oct 21 Javascript
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
JS比较2个日期间隔的示例代码
Apr 15 Javascript
Angular2表单自定义验证器的实现
Oct 19 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
Apr 19 Javascript
js事件委托和事件代理案例分享
Jul 25 Javascript
微信小程序仿美团城市选择
Jun 06 Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 jQuery
Node.js + express基本用法教程
Mar 14 Javascript
Vue如何获取数据列表展示
Dec 11 Javascript
JavaScript中window和document用法详解
Jul 28 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 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设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
对比分析json及XML
2014/11/28 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
Python判断telnet通不通的实例
2019/01/26 Python
利用python实现周期财务统计可视化
2019/08/25 Python
基于python实现文件加密功能
2020/01/06 Python
python如何安装下载后的模块
2020/07/03 Python
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
八年级音乐教学反思
2014/01/09 职场文书
新学期开学寄语
2014/01/18 职场文书
运动会入场式解说词
2014/02/18 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书