zoukankan      html  css  js  c++  java
  • 面试题-------闭包

    var object = {    
    name: "My Object",
    getNameFunc: function() {      
    return function() {        
    return this.name;      
    };    
    }  
    };  
    console.log(object.getNameFunc()());

    //The Window,此时是相当于object调用getNameFunc()方法,返回值是 function() {return this.name;};第二个括号相当于调用返回的新的函数,此时返回的this是window

    var name = "The Window";  
    var object = {    
    name: "My Object",
      getNameFunc: function() {      
    var that = this;      
    return function() {        
    return that.name;      
    };    
    }  
    };  
    console.log(object.getNameFunc()()); // My Object,that保存的是object

    var age=100;
    function test() {
    this.age=50;
    return function () {
    return this.age;
    }
    }

    var m=new test();//new出来一个新的test实体
    var n=test();
    console.log(m.age); // undefined,第一个return回来的是一个新的函数对象(匿名函数),新函数没有age属性,所以在return的时候是undefined
    console.log(m()); // 50
    console.log(n()); // 50

    但是如果把var n=test();放在console.log(m());之后,console.log(m());的值就是100

  • 相关阅读:
    键盘弹出与隐藏对TextView的影响
    iOS9 警告框
    计时器的写法
    iOS提交被拒
    新生活
    批量删除wps文档里的回车符的方法!WPS使用技巧分享!
    学习笔记计划
    监控服务器的注册及登陆并邮件通知的代码(go / python)
    Python调用C代码
    导入用户到Discuz论坛
  • 原文地址:https://www.cnblogs.com/luxiaoxiao/p/6064302.html
Copyright © 2011-2022 走看看