我有一个关于在嵌套函数方案中如何处理“ this”指针的问题。
假设我将以下示例代码插入到网页中。当我调用嵌套函数“ doSomeEffects()”时出现错误。我检查了Firebug,它表明当我使用该嵌套函数时,“
this”指针实际上指向全局“
window”对象,这是我所没有想到的。我一定不能正确理解某些东西,因为我认为自从我在对象的函数中声明了嵌套函数以来,它就应该具有相对于该函数的“局部”作用域(即“
this”指针将像引用对象本身一样)在我的第一个“ if”语句中情况如何)。
任何指针(无双关语)将不胜感激。
var std_obj = {
options : { rows: 0, cols: 0 },
activeEffect : "none",
displayMe : function() {
// the 'this' pointer is referring to the std_obj
if (this.activeEffect=="fade") { }
var doSomeEffects = function() {
// the 'this' pointer is referring to the window obj, why?
if (this.activeEffect=="fade") { }
}
doSomeEffects();
}
};
std_obj.displayMe();
在JavaScript中,this
对象实际上是基于如何进行函数调用的。
通常,有三种方法可以设置this
对象:
someThing.someFunction(arg1, arg2, argN)
someFunction.call(someThing, arg1, arg2, argN)
someFunction.apply(someThing, [arg1, arg2, argN])
在上述所有示例中,this
对象均为someThing
。在没有前置父对象的情况下调用函数通常会为您提供 全局
对象,这在大多数浏览器中都意味着该window
对象。
在Javascript中调用顶级函数时,函数中的this关键字引用默认对象(如果在浏览器中,则为窗口)。我的理解是,这是作为方法调用函数的一种特殊情况,因为默认情况下,它是在窗口上调用的(如John Resig的书《JavaScript忍者的秘密》第49页所述)。实际上,下面代码中的两个调用是相同的。 到目前为止还不错...这是我不明白的部分: 当一个函数嵌套在另一个函数中并在未指定要调用的对象的
问题内容: 我得到了一段我不明白的javascript代码: 如何在另一个函数中定义一个函数?我们可以从my()函数外部调用pad2()吗? 请给它一些照明。谢谢 问题答案: 函数是JavaScript中变量的另一种类型(当然有些细微差别)。在另一个函数中创建一个函数会更改该函数的作用域,就像改变变量的作用域一样。这对于与闭包一起使用以减少总体全局名称空间污染尤其重要。 除非已将另一个函数中定义的
本文向大家介绍JavaScript中的函数嵌套使用,包括了JavaScript中的函数嵌套使用的使用技巧和注意事项,需要的朋友参考一下 在JavaScript1.2之前,函数定义是只允许在顶层全局代码,但1.2的JavaScript可以嵌套函数定义其他函数中也是可以的。 仍然存在的函数定义可以循环或条件之内不会出现限制。在函数定义这些限制只适用于函数声明与函数语句。 函数文本(在JavaScri
问题内容: 我有以下代码: 有什么方法可以在函数外部调用函数?我试过调用,但我认为它仅在父函数内部可见。 问题答案:
问题内容: Java编程语言是否有任何扩展使创建嵌套函数成为可能?在很多情况下,我需要创建在另一个方法或for循环的上下文中仅使用一次的方法。到目前为止,尽管用Javascript可以很容易地完成,但我迄今仍无法完成。 例如,这无法在标准Java中完成: 问题答案: Java 8引入了lambda。 该语法可在定义了一种方法的任何接口上使用。因此,您可以将其与一起使用,但不能与一起使用。 是jav
问题内容: 我试图理解reactjs中的一些概念,但是我无法理解函数的嵌套。我创建了以下示例来调查我的担忧。 在下面的示例中,我呈现了一些内容,这些内容的价值来自一系列嵌套函数。但是,出现错误“未捕获的TypeError:无法读取未定义的属性’renderInnerContent’”。您能帮我了解发生了什么以及如何解决此问题吗?我的主要动机是了解如何将事物抽象为不同的功能。 问题答案: 未在该函数