zoukankan      html  css  js  c++  java
  • 关于闭包的一些小东西

    function Container(properties) {
    	var objthis = this;
    	for (var i in properties) { (function() {
    			var t = properties[i];
    			objthis["get" + i] = function() {
    				return t;
    			};
    			objthis["set" + i] = function(val) {
    				t = val;
    			};
    		})();
    	}
    }
    
    var prop = {
    	Name: "Jim",
    	Age: 13
    };
    var con = new Container(prop);
    console.log(con.getName());
    
    con.setName("Lucy");
    console.log(con.getName());
    console.log(prop.Name);
    

    前两个输出应该不会有什么问题。
    第三个输出,在匿名函数中,properties[i]的值已经赋给了临时变量t,闭包对于外部变量的引用完全由t这个媒介来完成,所以prop传入以后并未发生任何属性的更改

    遍历参数prop的属性时,针对每一个属性,用立即执行函数创建了一个闭包。
    所以get/ set方法创建后,“每一对”get/ set对应一个环境,能取到隔离的变量var t,用以存放最后对象get/ set方法修改的“属性值”

    以上内容来自于技术群里面的讨论,给出回答的是北川和先知,在这里做个mark以后会用到。

  • 相关阅读:
    MacBook Pro修改hosts
    Python WebSocket
    TCP三次握手和四次挥手过程
    Tcp三次握手和四次挥手
    常见正则表达式
    Python正则表达式
    Python使用gevent实现协程
    Tcp客户端构建流程
    AC6102开发板USB3.0测试和使用说明
    AC6102 DDR2测试工程
  • 原文地址:https://www.cnblogs.com/nunn/p/3461931.html
Copyright © 2011-2022 走看看