0 0

JS闭包、作用域链的问题0

var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
                alert(this);
        return this.name;
      };
    }
  };
  alert(object.getNameFunc()());//输出The Window
 
    var name1 = "The Window";
  var object1 = {
    name : "My Object",
    getNameFunc : function(){
      alert(this);
            var that = this;
      return function(){
        return that.name;
      };
    }
  };
  alert(object1.getNameFunc()());//输出My Object

上面的this为window对象,而下面的this为什么是object1对象,求当中的详细讲解,小子不胜感激

问题补充:疑惑,睡不着觉。。。
2014年8月05日 01:10

1个答案 按时间排序 按投票排序

0 0

采纳的答案

很简单,你要先明白这句底发生了什么。

object1.getNameFunc()()


这句可以简单的拆分成两步调用:
var anyFuc = object1.getNameFunc();
anyFuc();


第一步在作用域对象object1上调用getNameFunc函数返回一个Function对象;
第二步在全局作用域上(window)直接调用这个函数对象。

这样:
第一种写法下,最终获得的name是在全局对象window下的name;
第二种写法下,先在getNameFunc中使用anyFuc的闭包保存了它的作用域object1作为that变量,然后在anyFuc中直接访问的是它,自然最终获得是object1的name

2014年8月05日 09:25

相关推荐

    javascript 闭包、匿名函数、作用域链

    JavaScript中的闭包、匿名函数和作用域链是编程中至关重要的概念,它们是理解JavaScript运行机制的关键。在本文中,我们将深入探讨这三个概念,并通过实际示例来展示它们的运用。 首先,我们来讨论“闭包”。闭包是...

    深入理解JavaScript作用域和作用域链

    JavaScript作用域是编程中至关重要的...在实际编程中,我们还会遇到闭包、块级作用域(ES6中的`let`和`const`)等更高级的概念,这些都是基于作用域链的扩展,理解它们对于成为精通JavaScript的开发者来说必不可少。

    闭包作用域

    ### 闭包作用域 #### 一、JavaScript闭包简介 在JavaScript中,闭包(Closure)是一个非常重要的概念,它允许一个函数访问并操作其外部作用域中的变量,即使该函数在其外部作用域之外被调用。这种特性使得闭包成为...

    JavaScript闭包与作用域链实例分析

    本文实例讲述了JavaScript闭包与作用域链。分享给大家供大家参考,具体如下: 闭包定义 闭包指的是有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数A内部创建另一个函数B,那么函数B...

    Web前端面试题目JavaScript(作用域,原型。原型链,闭包,封装函数).txt

    前端面试题,包含JavaScript的闭包,作用域,原型,原型链,上下文环境以及DOM,BOM封装函数深度克隆,以及一些常见的·JS问题,试题简单但是容易混淆,作为前端工程师必考题

    JavaScript中作用域链的概念及用途讲解

    了解并熟练掌握作用域链,对于编写高效、无错的JavaScript代码至关重要,同时也能帮助开发者在面试中脱颖而出,解决实际开发中的调试问题。通过深入理解作用域链,我们可以更好地管理变量的生命周期,防止不必要的...

    JavaScript中的作用域链和闭包

    **作用域链**是JavaScript中用于决定变量访问的一个机制。每个函数在创建时,都会形成一个作用域链,这个链由当前函数的作用域(包含局部变量)和所有父级作用域(直至全局作用域)组成。作用域链确保了函数能够访问...

    JavaScript作用域、闭包、对象与原型链概念及用法实例总结

    JavaScript是Web开发中不可或缺的一部分,它提供了丰富的特性,如作用域、闭包、对象和原型链,这些都是理解和编写高效代码的关键。以下是对这些概念的详细解释: 1. **JavaScript变量作用域** - **函数作用域**:...

    深入了解JavaScript,优化作用域链(2).pdf

    在JavaScript编程中,作用域和作用域链是影响程序性能的关键因素之一。优化作用域链是提高JavaScript代码执行效率的重要手段。下面我们从多个方面来详细探讨作用域链的概念、作用域链的层级关系、变量访问的性能影响...

    JS的作用域与闭包

    ### JS的作用域与闭包 #### 一、作用域的基础概念 作用域是JavaScript中一个非常核心的概念,它定义了变量的可见性和生命周期。在学习作用域之前,我们需要先了解几个基本概念: - **变量**: 在JavaScript中,...

    10-作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?_For_vip_user_0011

    "作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?" 标题“作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?”中,我们可以看到JavaScript引擎是如何选择相同的变量的。...

    js作用域链图解ppt

    JavaScript中的作用域链是理解变量查找和闭包的关键概念。作用域链主要涉及到函数执行上下文和全局执行上下文中的作用域。以下是对这个主题的详细解释: 首先,每个函数在创建时,都会有一个内部属性[[scope]],它...

    夯实基础中篇-图解作用域链和闭包.doc

    在JavaScript编程中,作用域链和闭包是两个至关重要的概念,它们对于理解代码执行机制以及函数内部如何访问和管理变量至关重要。让我们深入探讨这两个概念。 首先,**作用域链**是JavaScript中的一种机制,它定义了...

    Javascript 闭包完整解释

    ### JavaScript闭包完整解释 #### 一、闭包的基本概念 **闭包**是一个非常重要的JavaScript概念,它指的是一个函数能够记住并访问其外部作用域中的变量的能力,即使该函数在其外部作用域之外被调用也是如此。具体...

    scope-chains-closures, Javascript作用域链和闭包 workshop.zip

    scope-chains-closures, Javascript作用域链和闭包 workshop 范围链和闭包 workshop正在启动$ npm install -g scope-chains-closures$ scope-chains-closures # or, shorter: sccjs使用箭头

    图解Javascript——作用域、作用域链、闭包

    当代码试图访问一个变量时,JavaScript引擎会顺着作用域链向上查找,直到找到该变量或者达到作用域链的末端,如果未找到则返回undefined。 闭包是JavaScript中一个重要的概念,它允许一个函数访问并操作函数外部的...

    深入理解javascript原型和闭包

    深入理解javascript原型和闭包(01)——一切都是对象 深入理解javascript原型和闭包(02)——函数和对象的关系

    深度探讨javascript函数的原型链和闭包

    闭包是理解作用域链的关键概念,它允许内部函数记住其定义时的作用域,即使外部函数已经完成执行。闭包常常用于封装变量和实现私有方法,提高代码的封装性和安全性。 总结一下,JavaScript中的函数不仅是一种数据...

    js闭包写法学习demo

    2. **作用域链**:每个函数都有一个作用域链,用于查找变量。当内部函数试图访问一个变量时,它会首先在自己的作用域内查找,如果没有找到,则会沿着作用域链向上查找,直到找到全局作用域。 3. **变量持久化**:...

Global site tag (gtag.js) - Google Analytics