深入理解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源码]超长文章自动分页(客户端版)
Jan 09 Javascript
两个Javascript小tip资料
Nov 23 Javascript
javascrip关于继承的小例子
May 10 Javascript
node.js中的buffer.write方法使用说明
Dec 10 Javascript
js操作css属性实现div层展开关闭效果的方法
May 11 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
Nov 18 Javascript
require.js+vue开发微信上传图片组件
Oct 27 Javascript
javascript实现简单的可随机变色网页计算器示例
Dec 30 Javascript
解决option标签selected="selected"属性失效的问题
Nov 06 Javascript
解决Vue调用springboot接口403跨域问题
Sep 02 Javascript
ES6中Set和Map用法实例详解
Mar 02 Javascript
ztree+ajax实现文件树下载功能
May 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&mysql(五)
2006/10/09 PHP
php INI配置文件的解析实现分析
2011/01/04 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python3设计模式之简单工厂模式
2017/10/17 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
python实现简易云音乐播放器
2018/01/04 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
创业计划书中要认真思考的问题
2013/12/28 职场文书
法人授权委托书
2014/04/03 职场文书
仓库规划计划书
2014/04/28 职场文书
读书月活动方案
2014/05/22 职场文书
工程质检员岗位职责
2015/04/08 职场文书
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL