永发信息网

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

答案:2  悬赏:30  手机版
解决时间 2021-11-28 09:51
可不可以详细说明一下以下JS代码运行的方式 一直没有理解
最佳答案
//先解释个简单的问题,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());
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
不会加剧酸雨、臭氧层空洞、温室效应等环境问
县城商铺多少钱一平
中裕燃气待遇怎么样?单休还是双休?吃住环境
我现在在广东省广州市花都区花山镇附近有修手
我每个月公积金缴存基数为2600,个人缴存260
手机怎么插不进去卡怎么回事
2乘3和6乘4
钱包易贷是不是正规公司?
“考”字的笔顺
3m和史密斯前置过滤器哪个好
185KW电动机星三角降压启动实物接线图
大学住双人宿舍好吗?
s-la1-dn11是怎么接线的
【惊人】天佑干嘛去了?
生紫薯泡开水喝营养效果
推荐资讯
苏联在东北的百万大军,是无私帮助中国还是另
dh550i4800 后面的数字是什么意思
想买个3到4万的公路车,不知道是组装好还是买
乌兰沟这个地址在什么地方,我要处理点事
😨 😰 😱 这三个表情分
沙志刚教授的书法师傅是谁?
正大猪饲料饲料怎样。
江西永新打人事件那个人为什么被打?
任务驱动型作文母亲节到了,一早打开朋友圈
我想在温哥华学西餐 这边有学这个的学校吗?
单选题发展中国家主要分布在A.欧洲、北美洲以
内存条的延迟:CL=11和CL=11-11-11-35有什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?