在 JavaScript 中,我们可以使用函数和闭包来实现模拟类的封装。首先我们需要创建一个构造函数,并将属性和方法添加到构造函数的原型对象中。例如:
function Person(name, age) {
// 私有变量
var address = 'Beijing';
// 公有属性
this.name = name;
this.age = age;
// 公有方法
this.sayHello = function() {
console.log('Hello, my name is ' + this.name);
};
// 私有方法
function getAddress() {
return address;
};
// 特权方法
this.showAddress = function() {
console.log('My address is ' + getAddress());
};
}
上述例子中,Person
构造函数接受 name
和 age
参数,并在其内部定义了一个私有变量 address
,还有公有属性 name
和 age
,以及公有方法 sayHello
和特权方法 showAddress
。注意,私有方法 getAddress
只能由特权方法 showAddress
访问。
接着,我们可以使用 new
关键字来创建该类的实例:
const person1 = new Person('Tom', 25);
person1.sayHello(); // 输出 "Hello, my name is Tom"
person1.showAddress(); // 输出 "My address is Beijing"
console.log(person1.address); // undefined,因为 address 是私有变量
这种方式模拟了面向对象的封装效果,能够保护私有属性和方法,并提供公有接口来访问它们。