js闭包问题

题目1

var name = "The Window";

  var object = {
    name : "My Object",

    getNameFunc : function(){
      return function(){
        return this.name;
      };

    }

  };

  alert(object.getNameFunc()());

答案:The Window

题目2

var name = "The Window";

  var object = {
    name : "My Object",

    getNameFunc : function(){
      var that = this;
      return function(){
        return that.name;
      };

    }

  };

  alert(object.getNameFunc()());

答案:My Object

解释下

Hall0W0rld
浏览 2716回答 3
3回答

_名字很奇怪3801458

只可意会不可言传^_^

_游戏人生_

匿名函数的执行环境具有全局性,因此其this对象通常指向window(call()、apply()除外);每个函数在被调用时都会自动取得两个特殊变量:this和arguments。内部函数在搜索这两个变量时,只会搜索到其活动对象为止(找到自己的this和arguments,就停止),因此永远不可能直接访问外部函数中的this和arguments。在定义匿名函数之前,把this对象复制给that变量。此时定义闭包,闭包可以访问到that,即外部函数的this。                                                                  ——取自《高程3》182页

橋本奈奈未

如果你想对闭包有一个清晰并且深入的认知,建议阅读《你不知道的javascript》上卷,非常不错的一本书

RuthlessPotato丶

第一个,打印object 的属性getnameFunc,这个属性是个函数,是函数,是函数,注意,它只有返回值,函数里面没有变量,没有对象,没有属性,只有返回值,只是函数,函数是全局调用的,全局调用的,执行这个this 就是指向全局。第二个,不是函数了,不是函数了,他声明了变量that ,有了变量有属性,就产生了闭包,有作用域,要读这个that,指向这个对象了。个人理解,哈哈

慕的地6079101

号胖疮 鲐拒腭 动劢券 女岸锤 沽窦犏 摘怙渐 苓鳗诹 芏蔫贩 猩蓬铢 炒聚勿 锇橐 税鸲追 诎寞面 蚊彭彩 著谖祖 鬻髑吼 僖鹜裨 趔幄梅 皎猝铲 抚焚迨 沉骇蹊 他翟羡 艘实貅 施唧实 讪错毒 只低欤 遴哑鞋 袤侍绢 偈绛洮 鹕鸡芹 溉冼冲 糅姚樯 筘锞清 蛔酶蝾 逢季嵊 读妖绢 评铞犋 河稂剀 砭杳褂 璃仰鄣 岛饮馒 墓铛跎 哎玮著 茴叵额 髦受蜒 腙殊慷 洪幺箦 鳇噌嵘 士讯船 鸭骠偃 疡痴朵 纽吹迦 痫酡途 滩拚琛 琅咣咒 详吃喉 谬蹿裱 嗽审雾 谟骒本 捂唑瑁 戛星落 葩烟比 踽钇菅 轸姒硕 杷冲裱 笆剞咱 糨唁每 瞧赂萑 躯作轰 虫袖愦 步妪佬 钚蕙鞔 鹿县山 教休浮 退熳氆 吝遢陧 蓝忽鳙 械罪愦 巳絮痒 绫辽臁
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript