js 回调函数中 this对象的执行环境(上下文)
2015-01-07 00:13
375 查看
<html> <head> <script type="text/javascript"><!-- var context="全局"; var testObj={ context:"初始", callback:function (str){ //回调函数 alert("callback:我所处的上下文中,context="+this.context+",我被回调的方式:"+str); } }; //创建一个对象,作为测试回调函数的上下文 testObj.context="已设置"; function testCall(){ callMethod(testObj.callback); callObjMethod(testObj,testObj.callback); } function callMethod(method){ method("通过默认上下文回调"); } function callObjMethod(obj,method){ method.call(obj,"指定显式对象上下文回调"); } function testCall1(){ testObj.callback('直接执行'); } // --></script> </head> <body> <a href="javascript:void(0)" onclick="testCall()">调用测试</a> <a href="javascript:void(0)" onclick="testCall1()">调用测试1</a></body> </html>
执行上面的代码,点击第一个链接,结果是:callback:我所处的上下文中,context=全局,我被回调的方式:通过默认上下文回调、callback:我所处的上下文中,context=已设置,我被回调的方式:指定显式对象上下文回调
点击第二个链接,结果是callback:我所处的上下文中,context=已设置,我被回调的方式:直接执行
结论:
1、在回调函数中的this,其上下文环境是调用者所在的执行环境;本例中,点击第一个链接时,执行的环境是callMethod>testCall>window
2、本例中,作为对象testObj中的方法调用,this值得是testObj对象本身。(例如 点击第二个链接的记过)
相关文章推荐
- 深入学习JS执行--创建执行上下文(变量对象,作用域链,this)
- js函数和对象的魅力之this、return和上下文环境的功劳(小感悟)
- 执行上下文、变量对象、作用域链、this
- 执行环境和对象上下文
- JS执行上下文与变量对象
- js对象字面量属性间相互访问的问题 和 这个问题与执行环境的关系
- JS 中 this上下文对象的使用方式
- 关于js的this上下文环境绑定
- JS执行上下文(执行环境)详细图解
- js 执行上下文环境
- JS 中 this上下文对象的使用方式
- js笔记---作用域(执行上下文[execution context],活动对象) 闭包
- Javascript 作用域链 活动对象 执行环境 与 this 的纠结 总结~
- JS 中关于this 执行环境的问题_part2
- 浅谈js中的执行环境和执行环境对象
- 前端高质量知识(二)-JS执行上下文(执行环境)详细图解
- js 执行环境(上下文)、作用域链
- 执行环境和对象上下文
- JS 如何将函数的this环境置为变量对象
- Javascript 作用域链 活动对象 执行环境 与 this 的纠结 总结~