动态产生函数

这两天在看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());

你可能感兴趣的:(函数)