本文通过 JavaScript 代码示例,展示如何利用闭包在构造函数中动态生成 getter 和 setter 方法。通过遍历属性对象,为每个属性创建对应的访问器函数,实现私有属性的封装与访问。
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); // 自执行函数,this在这里表示用户对象实例
}
}
var user = new User({
name: "Bob",
age: 44
});
alert(user.name == null); // 注意:name属性并不存在,因为它是属性对象的私有变量
user.setname("Supersha"); // 调用动态生成的对象,修改属性对象的值
alert(user.getname()); // 调用动态生成的对象,获取属性对象的值