深入理解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 相关文章推荐
一个多次搜索+多次传值的解决方案
Jan 20 Javascript
jquery form 加载数据示例
Apr 21 Javascript
JS中实现简单Formatter函数示例代码
Aug 19 Javascript
jQuery实现首页顶部可伸缩广告特效代码
Apr 15 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
Oct 25 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
Reactjs实现通用分页组件的实例代码
Jan 19 Javascript
jQuery实现三级联动效果
Mar 02 Javascript
vue.js动态数据绑定学习笔记
May 19 Javascript
AngularJS入门教程一:路由用法初探
May 27 Javascript
JavaScript实现简单评论功能
Aug 17 Javascript
Echarts实现多条折线可拖拽效果
Dec 19 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中一个有意思的日期逻辑处理
2012/03/25 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
新闻内页-JS分页
2006/06/07 Javascript
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
原生JS封装animate运动框架的实例
2017/10/12 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python 查看文件的读写权限方法
2018/01/23 Python
python实现屏保计时器的示例代码
2018/08/08 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
JVM是一个编译程序还是解释程序
2012/09/11 面试题
本科生求职简历的自我评价
2013/10/21 职场文书
学前教育毕业生自荐信范文
2013/12/24 职场文书
《自选商场》教学反思
2014/02/14 职场文书
向领导表决心的话
2014/03/11 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
新员工入职感想
2015/08/07 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL