属性闭包
时间: 2024-02-15 16:05:13 浏览: 26
属性闭包指的是一个函数返回另一个函数,并且返回的函数可以访问父函数的局部变量。这样的函数一般用于创建私有变量和方法,以实现数据封装和信息隐藏。
在JavaScript中,属性闭包通常通过使用函数工厂来实现。例如,下面的代码创建了一个函数工厂,用于创建包含私有变量和方法的对象:
```javascript
function createPerson(name) {
var age = 0;
function getAge() {
return age;
}
function setAge(newAge) {
age = newAge;
}
return {
getName: function() {
return name;
},
getAge: getAge,
setAge: setAge
};
}
var person = createPerson('Alice');
console.log(person.getName()); // 'Alice'
console.log(person.getAge()); // 0
person.setAge(30);
console.log(person.getAge()); // 30
```
在这个例子中,`createPerson`函数返回一个包含`getName`、`getAge`和`setAge`方法的对象。`age`变量和`getAge`、`setAge`方法都定义在`createPerson`函数的作用域内,因此只能被`getAge`和`setAge`方法访问,从而实现了数据封装和信息隐藏的效果。