在 javascript 库中导出的 class 之外声明一个函数是实现私有函数的好习惯吗?
Is declaring a function outside an exported class in javascript library a good practice to achieve private functions?
我正在尝试制作我自己的 Javascript 库并想仔细考虑一下。
我偶然发现了一个在 class 中创建私有函数的约定,方法是在它前面加上下划线 _
,但仍然可以访问它们。它看起来像这样:
export default class Test {
constructor() {
this._privateFunction();
}
_privateFunction() {
...
}
}
我正在考虑将函数放在导出的 class 之外。这是个好主意吗?
export default class Test {
constructor() {
privateFunction();
}
}
function privateFunction() {
...
}
当在导出 class 之外声明时,我找不到访问该函数的方法,因此它似乎是一个可行的替代方案。
这是个好主意吗?它不会在浏览器中产生解析问题吗?
是的,使用闭包使事物(包括函数)保持私有是一种完全正常且常见的方法。解析没有问题
这种方法的一个缺点是私有函数只是一个函数,而不是一个方法。这意味着您需要显式地将实例作为参数传递以使其在其中可用:
export default class Test {
constructor() {
privateFunction(this);
}
}
function privateFunction(self) {
…
}
我正在尝试制作我自己的 Javascript 库并想仔细考虑一下。
我偶然发现了一个在 class 中创建私有函数的约定,方法是在它前面加上下划线 _
,但仍然可以访问它们。它看起来像这样:
export default class Test {
constructor() {
this._privateFunction();
}
_privateFunction() {
...
}
}
我正在考虑将函数放在导出的 class 之外。这是个好主意吗?
export default class Test {
constructor() {
privateFunction();
}
}
function privateFunction() {
...
}
当在导出 class 之外声明时,我找不到访问该函数的方法,因此它似乎是一个可行的替代方案。
这是个好主意吗?它不会在浏览器中产生解析问题吗?
是的,使用闭包使事物(包括函数)保持私有是一种完全正常且常见的方法。解析没有问题
这种方法的一个缺点是私有函数只是一个函数,而不是一个方法。这意味着您需要显式地将实例作为参数传递以使其在其中可用:
export default class Test {
constructor() {
privateFunction(this);
}
}
function privateFunction(self) {
…
}