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以后会用到。

  • 相关阅读:
    java基础-对象
    java基础-类
    java基础-数组
    java基础-for循环、while循环相关
    java基础-程序执行流程之if-else语句
    ODBC, OLEDB, ADO, ADO.NET
    无题
    优秀资源
    SSRS Report Knowledge Base
    SSRS 通过Customer Code访问Dataset
  • 原文地址:https://www.cnblogs.com/nunn/p/3461931.html
Copyright © 2011-2022 走看看