深入理解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 相关文章推荐
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
Jan 20 Javascript
深入理解javascript原型链和继承
Sep 23 Javascript
javascript与Python快速排序实例对比
Aug 10 Javascript
Bootstrap Img 图片样式(推荐)
Dec 13 Javascript
VueJs组件prop验证简单介绍
Sep 12 Javascript
React组件中的this的具体使用
Feb 28 Javascript
微信小程序冒泡事件及其阻止方法实例分析
Dec 06 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
Jan 18 jQuery
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
JS实现动态添加外部js、css到head标签的方法
Jun 05 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
Dec 09 Javascript
es6 super关键字的理解与应用实例分析
Feb 15 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多进程编程实例
2014/10/15 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
jquery 学习之二 属性相关
2010/11/23 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用Python的PIL模块来进行图片对比
2016/02/18 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
python实现二维插值的三维显示
2018/12/17 Python
Python爬虫文件下载图文教程
2018/12/23 Python
python常用排序算法的实现代码
2019/11/08 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
Ajxa常见问题都有哪些
2014/03/26 面试题
旅游管理实习自我鉴定
2013/09/29 职场文书
大学军训自我鉴定
2013/12/15 职场文书
财会自我鉴定范文
2013/12/27 职场文书
竞聘书格式及范文
2014/03/31 职场文书
求职意向书
2014/07/29 职场文书
入股合作协议书
2014/10/12 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
python在package下继续嵌套一个package
2022/04/14 Python
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL