JS嵌套函数调用上下文的问题解决
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<script>
var stu ={
m: function(){
var self = this;
console.log(this === stu); // ==> true;
function f(){
// 调用嵌套函数时this不是指向调用外层函数的上下文
console.log(this === stu); // ==> false;
如果想访问外部函数的this需要将外部函数的this保存在一个变量中。
console.log(self === stu); // ==> true;
}
f();
}
}
</script>
<body>
</body>
</html>
相关推荐
-
javascript 函数调用规则
JavaScript函数调用规则一 (1)全局函数调用: function makeArray( arg1, arg2 ){ return [this , arg1 , arg2 ]; } 这是一个最常用的定义函数方式.相信学习JavaScript的人对它的调用并不陌生. 调用代码如下: makeArray('one', 'two'); // => [ window, 'one', 'two' ] 这种方式可以说是全局的函数调用. 为什么说是全局的函数? 因为它是全局对象window 的一个方法
-
javascript iframe内的函数调用实现方法
sxmsxm.html 复制代码 代码如下: <script> function sonfun() { alert('ok'); } </script> main.html 复制代码 代码如下: <iframe id="sxm" src="sxmsxm.html" width='100' height='100'></iframe> 在main.html中执行 sxmsxm.html中的sonfun() 有两种方式 1
-
js this函数调用无需再次抓获id,name或标签名
this就是你当前要执行的js所抓获的节点,这样在js里就可以不用document.getElement之类的写法来抓获id,name或标签名,省去一些麻烦.一般用obj来代替. 复制代码 代码如下: <input type="button" id="tianjia" value="保 存" class="btn1" onClick="nullCheck(this)"/> <script&
-
js中函数调用的两种常用方法使用介绍
一个js函数 function test(aa){ window.alert("你输入的是"+aa); } 方法一:直接调用 test("dddd"); 方法二:函数赋值给变量 var abc=test; abc('中国');//用变量来调用函数 注意: 当我们写成这种形式的时候,var abc=test("dddd"); 不能通过变量abc来调用函数. 这种写法当test有返回值的时候会把返回值赋值给abc,当没有返回值的时候abc的值为und
-
javascript 函数调用的对象和方法
如果你真正理解Javascript函数是如何调用工作的,那么就可以避免一些bug的发生: 首先让我们创建一个简单的函数,这个函数将在下文中使用,这个函数仅仅返回当前的this的值和两个提供的参数. 复制代码 代码如下: function makeArray(arg1, arg2){ return [ this, arg1, arg2 ]; } 调用这个函数非常的简单,我们需要做的仅仅是: 复制代码 代码如下: makeArray('one', 'two'); 返回值:=> [ window, '
-
js函数调用的方式
Js函数调用的方式有如下几种情况: (1)具名函数直接调用 复制代码 代码如下: function foo() { } foo(); (2)匿名函数通过引用来调用 复制代码 代码如下: fooRef = function() { }fooRef(); (3)没有引用的匿名函数调用1 复制代码 代码如下: (function() {}()); (4)没有引用的匿名函数调用2 复制代码 代码如下: (function() { })(); (5)没有引用的匿名函数调用3 复制代码 代码如下
-
JS中获取函数调用链所有参数的方法
function getCallerArgument(){ var result = []; var slice = Array.prototype.slice; var caller = arguments.callee.caller; while(caller){ result = result.concat(slice.call(caller.arguments, 0)); caller = caller.arguments.callee.caller; } return result;
-
跟我学习javascript的函数调用和构造函数调用
一.函数调用 Function绝对是JavaScript中的重中之重.在JavaScript中,Function承担了procedures, methods, constructors甚至是classes以及modules的功能. 在面向对象程序设计中,functions,methods以及class constructor往往是三件不同的事情,由不同的语法来实现.但是在JavaScript中,这三个概念都由function来实现,通过三种不同的模式. 最简单的使用模式就是function 调用
-
js 函数调用模式小结
方法调用模式 当一个函数被保存为对象的一个属性时,我们称之它为该对象的一个方法,那么this被绑定到该对象上. 复制代码 代码如下: var myObject={ name : "myObject" , value : 0 , increment : function(num){ this.value += typeof(num) === 'number' ? num : 0; } , toString : function(){ return '[Object:'+this.name
-
js函数调用常用方法详解
来源 javascript语言精粹.这不是书上的源代码. js的函数调用会免费奉送两个而外的参数就是 this 和 arguments .arguments是参数组,他并不是一个真实的数组,但是可以使用.length方法获得长度. 书上有说4中调用方式: 方法调用模式 函数调用模式 构造器调用模式 apply调用模式 下面我们来看看一些实例更好理解. 1:方法调用模式 请注意this此时指向myobject. 复制代码 代码如下: /*方法调用模式*/ var myobject={ value:
-
JavaScript实现显示函数调用堆栈的方法
本文实例讲述了JavaScript实现显示函数调用堆栈的方法.分享给大家供大家参考,具体如下: 许多大型的JavaScript应用程序间的函数调用关系是非常复杂的,在开发或者调试过程中,经常需要跟踪某个函数是由哪些函数调用后才触发执行的,弄清楚这些函数的调用顺序对我们理解代码的数据流向是非常重要的. Firebug提供了console.trace()来显示函数堆栈,在需要调试的地方加上下面的一行代码就能显示该函数调用时的上下文关系.IE6就没有这么方便了,它没有提供显示函数堆栈的工具,当不可避免
-
Javascript 函数的四种调用模式
Javascript 函数的四种调用模式 1 函数模式 最普通的函数调用 // 声明式函数 function fn1 () { console.log(this); } // 函数表达式函数 var fn2 = function() { console.log(this); }; // 调用 函数中this表示全局对象,在浏览器中就是指window fn1(); //window fn2(); //window 2 方法模式 函数依附于一个对象,是对象的一个属性,我们再调用这个函数.这种模式就
随机推荐
- jQuery实现可兼容IE6的遮罩功能详解
- js写的评论分页(还不错)
- struts2标签总结_动力节点Java学院整理
- js格式化金额可选是否带千分位以及保留精度
- javaScript函数中执行C#代码中的函数方法总结
- Python操作csv文件实例详解
- 关于使用存储过程创建分页
- 使用C#开源文件实时监控工具Tail&TailUI介绍
- C#使用ImitateLogin模拟登录百度
- table对象中的insertRow与deleteRow使用示例
- javascript基础之查找元素的详细介绍(访问节点)
- Jquery Select操作方法集合脚本之家特别版
- jquery uploadify 在FF下无效的解决办法
- Jquery-data的三种用法
- 深入理解JavaScript系列(50):Function模式(下篇)
- JS辨别访问浏览器判断是android还是ios系统
- PHP进程同步代码实例
- 传奇私服人物死亡自动复活回城的修改
- 基于C语言string函数的详解
- C#读取Excel的三种方式以及比较分析