永发信息网

可不可以详细说明一下以下JS代码运行的方式 一直没有理解

答案:2  悬赏:30  手机版
解决时间 2021-11-28 09:51
  • 提问者网友:喧嚣尘世
  • 2021-11-27 23:29
可不可以详细说明一下以下JS代码运行的方式 一直没有理解
最佳答案
  • 五星知识达人网友:孤独入客枕
  • 2021-11-27 23:56
//先解释个简单的问题,object.getNameFunc 是返回一个方法,所以最后执行的时候需要两对括号
//这题其实是想让你知道js 变量作用域,此代码最终弹出"abcdefg",因为this的值为window
//代码整理下应该好理解点

var name = "abcdefg";//全局变量name,没有闭包,所以默认为window.name='abcdefg'
var fn1 = function(){
        //此处this = window
        return this.name; 
     }; 
    var object = { 
      name : "My Object", 
      getNameFunc : function(){ 
        return fn1;
      } 
}; 
var fn2=object.getNameFunc();//此处返回的是fn1
alert(fn2());//弹出'abcdefg'


//Q:怎么改才会弹出"My Object"?
//A:有两种改发
//第一种
var name = "abcdefg"; 
    var object = { 
      name : "My Object", 
      getNameFunc : function(){ 
          var self=this;//只有在此处使用this,才表示object对象
        return function(){ 
          return self.name;
        }; 
      } 
}; 
alert(object.getNameFunc()());


//第二种
var name = "abcdefg"; 
    var object = { 
      name : "My Object", 
      getNameFunc : function(){ 
          return this.name;//只有在此处使用this,才表示object对象
      } 
}; 
alert(object.getNameFunc());
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯