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

  • 相关阅读:
    FFmpeg编程(二)FFmpeg中级开发
    Oracle锁表与解锁 对象锁与解锁
    index_combine and index_john
    oracle hint
    SAR
    组播IP地址
    Linux下使用tc(Traffic Control) 流量控制命令模拟网络延迟和丢包
    Linux服务器丢包故障的解决
    linux man page sections
    微服务架构统一安全认证设计与实践
  • 原文地址:https://www.cnblogs.com/luxiaoxiao/p/6064302.html
Copyright © 2011-2022 走看看