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>

(0)

相关推荐

  • js this函数调用无需再次抓获id,name或标签名

    this就是你当前要执行的js所抓获的节点,这样在js里就可以不用document.getElement之类的写法来抓获id,name或标签名,省去一些麻烦.一般用obj来代替. 复制代码 代码如下: <input type="button" id="tianjia" value="保 存" class="btn1" onClick="nullCheck(this)"/> <script&

  • Javascript 函数的四种调用模式

    Javascript 函数的四种调用模式 1  函数模式 最普通的函数调用 // 声明式函数 function fn1 () { console.log(this); } // 函数表达式函数 var fn2 = function() { console.log(this); }; // 调用 函数中this表示全局对象,在浏览器中就是指window fn1(); //window fn2(); //window 2 方法模式 函数依附于一个对象,是对象的一个属性,我们再调用这个函数.这种模式就

  • js函数调用常用方法详解

    来源 javascript语言精粹.这不是书上的源代码. js的函数调用会免费奉送两个而外的参数就是 this 和 arguments .arguments是参数组,他并不是一个真实的数组,但是可以使用.length方法获得长度. 书上有说4中调用方式: 方法调用模式 函数调用模式 构造器调用模式 apply调用模式 下面我们来看看一些实例更好理解. 1:方法调用模式 请注意this此时指向myobject. 复制代码 代码如下: /*方法调用模式*/ var myobject={ value:

  • 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 函数调用的对象和方法

    如果你真正理解Javascript函数是如何调用工作的,那么就可以避免一些bug的发生: 首先让我们创建一个简单的函数,这个函数将在下文中使用,这个函数仅仅返回当前的this的值和两个提供的参数. 复制代码 代码如下: function makeArray(arg1, arg2){ return [ this, arg1, arg2 ]; } 调用这个函数非常的简单,我们需要做的仅仅是: 复制代码 代码如下: makeArray('one', 'two'); 返回值:=> [ window, '

  • 跟我学习javascript的函数调用和构造函数调用

    一.函数调用 Function绝对是JavaScript中的重中之重.在JavaScript中,Function承担了procedures, methods, constructors甚至是classes以及modules的功能. 在面向对象程序设计中,functions,methods以及class constructor往往是三件不同的事情,由不同的语法来实现.但是在JavaScript中,这三个概念都由function来实现,通过三种不同的模式. 最简单的使用模式就是function 调用

  • 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

  • JavaScript实现显示函数调用堆栈的方法

    本文实例讲述了JavaScript实现显示函数调用堆栈的方法.分享给大家供大家参考,具体如下: 许多大型的JavaScript应用程序间的函数调用关系是非常复杂的,在开发或者调试过程中,经常需要跟踪某个函数是由哪些函数调用后才触发执行的,弄清楚这些函数的调用顺序对我们理解代码的数据流向是非常重要的. Firebug提供了console.trace()来显示函数堆栈,在需要调试的地方加上下面的一行代码就能显示该函数调用时的上下文关系.IE6就没有这么方便了,它没有提供显示函数堆栈的工具,当不可避免

  • javascript 函数调用规则

    JavaScript函数调用规则一 (1)全局函数调用: function makeArray( arg1, arg2 ){ return [this , arg1 , arg2 ]; } 这是一个最常用的定义函数方式.相信学习JavaScript的人对它的调用并不陌生. 调用代码如下: makeArray('one', 'two'); // => [ window, 'one', 'two' ] 这种方式可以说是全局的函数调用. 为什么说是全局的函数? 因为它是全局对象window 的一个方法

  • 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中函数调用的两种常用方法使用介绍

    一个js函数 function test(aa){ window.alert("你输入的是"+aa); } 方法一:直接调用 test("dddd"); 方法二:函数赋值给变量 var abc=test; abc('中国');//用变量来调用函数 注意: 当我们写成这种形式的时候,var abc=test("dddd"); 不能通过变量abc来调用函数. 这种写法当test有返回值的时候会把返回值赋值给abc,当没有返回值的时候abc的值为und

  • js函数调用的方式

    Js函数调用的方式有如下几种情况: (1)具名函数直接调用 复制代码 代码如下: function foo()  {  }  foo(); (2)匿名函数通过引用来调用 复制代码 代码如下: fooRef = function()  {  }fooRef(); (3)没有引用的匿名函数调用1 复制代码 代码如下: (function() {}()); (4)没有引用的匿名函数调用2 复制代码 代码如下: (function() { })(); (5)没有引用的匿名函数调用3  复制代码 代码如下

随机推荐