动态产生函数

这两天在看John Resig写的精通javascript,这本书以前也看过一遍,限于当时的水平问题,很多地方没有看懂。这段时间又想把这本书再看一遍,结果收获不少。其中发现一个很有意思的写法:

function User(properties) {
	for (var i in properties) { (function(which) {
			var p = i;
			which['get' + p] = function() {
				return properties[p];
			};
			which['set' + p] = function(val) {
				properties[p] = val;
			}
		})(this);
	}
}
这段代码有意思的地方就在于,这个函数的方法是动态的,参数properties是个对象,这个对象有多少个属性,它就有多少个相对应的get和set方法,举个例子:

var my = new User({name:'zjh'});
//那个my这个实例就有getname和setname这两个方法了
alert(my.getname());
my.setname('sky')
alert(my.getname());
现在给参数多加几个属性看看:

var my = new User({name:'zjh',age:18});
那个my这个实例就有getname,setname,getage,setage四个方法了;

alert(my.getname());
my.setname('sky')
alert(my.getname());
alert(my.getage());
my.setage('20')
alert(my.getage());

posted @ 2010-10-14 20:07  zjhsd2007  阅读(161)  评论(0编辑  收藏  举报