深入理解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 04 Javascript
怎么选择Javascript框架(Javascript Framework)
Nov 22 Javascript
浅析XMLHttpRequest的缓存问题
Dec 13 Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
jquery控制display属性为none或block
Mar 31 Javascript
微信小程序 教程之数据绑定
Oct 18 Javascript
Vue.js常用指令之循环使用v-for指令教程
Jun 27 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
Nov 17 Javascript
Angular.JS读取数据库数据调用完整实例
Jul 02 Javascript
利用Angular7开发一个Radio组件的全过程
Jul 11 Javascript
vue cli3适配所有端方案的实现
Apr 13 Javascript
解决vue项目,npm run build后,报路径错的问题
Aug 13 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教程 基本语法
2009/10/23 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
javascript使用链接跨域下载图片
2019/11/01 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python银行系统实现源码
2019/10/25 Python
Python实现word2Vec model过程解析
2019/12/16 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
医学生实习自荐信
2013/10/01 职场文书
董事长秘书岗位职责
2013/11/29 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
毕业生对母校寄语
2015/02/26 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
JavaScript实现两个数组的交集
2022/03/25 Javascript