我希望这会有所帮助。:)
I. 在IIFE(Immediately-invoked function expression)中声明 vars、functions ,只能在匿名函数中使用。(当您需要更改 ES6 的代码时,最好使用“let, const”关键字而不使用 'var'。)
let Name = (function() {
const _privateHello = function() {
}
class Name {
constructor() {
}
publicMethod() {
_privateHello()
}
}
return Name;
})();
二、WeakMap 对象可以很好地解决内存泄漏问题。
当实例被移除时,WeakMap 中存储的变量也会被移除。检查这篇文章。(管理 ES6 类的私有数据)
let Name = (function() {
const _privateName = new WeakMap();
})();
三、让我们把所有东西放在一起。
let Name = (function() {
const _privateName = new WeakMap();
const _privateHello = function(fullName) {
console.log("Hello, " + fullName);
}
class Name {
constructor(firstName, lastName) {
_privateName.set(this, {firstName: firstName, lastName: lastName});
}
static printName(name) {
let privateName = _privateName.get(name);
let _fullname = privateName.firstName + " " + privateName.lastName;
_privateHello(_fullname);
}
printName() {
let privateName = _privateName.get(this);
let _fullname = privateName.firstName + " " + privateName.lastName;
_privateHello(_fullname);
}
}
return Name;
})();
var aMan = new Name("JH", "Son");
aMan.printName(); // "Hello, JH Son"
Name.printName(aMan); // "Hello, JH Son"