深入理解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 相关文章推荐
菜鸟javascript基础整理1
Dec 06 Javascript
Dom 结点创建 基础知识
Oct 01 Javascript
JavaScript中的console.dir()函数介绍
Dec 29 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
Aug 29 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
React从react-router路由上做登陆验证控制的方法
May 10 Javascript
ES6 Symbol数据类型的应用实例分析
Jun 26 Javascript
Element-ui DatePicker显示周数的方法示例
Jul 19 Javascript
VUE实现自身整体组件销毁的示例代码
Jan 13 Javascript
详解JavaScript数据类型和判断方法
Sep 04 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
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数据库连接
2006/10/09 PHP
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
python图像处理之镜像实现方法
2015/05/30 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
Python3离线安装Requests模块问题
2019/10/13 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
经典大学生求职信范文
2014/01/06 职场文书
离婚案件上诉状
2015/05/23 职场文书
Python面向对象编程之类的概念
2021/11/01 Python
全网非常详细的pytest配置文件
2022/07/15 Python