gpt4 book ai didi

javascript - JavaScript 中的隐私

转载 作者:数据小太阳 更新时间:2023-10-29 05:18:08 24 4
gpt4 key购买 nike

函数作用域提供了 JavaScript 中唯一的隐私。

所以规范的:

function Ctor(dep1, dep2) {
this._dep1 = dep1;
this._dep2 = dep2;
}

Ctor.prototype.foo = function() {
// use this._dep1/2...
}

...有问题,因为它没有为注入(inject)的依赖项提供封装。

提供真正封装的替代方案(尽管在 foo 的位置方面略有不同)可能是:

function factory(dep1, dep2) {
return {
foo: partial(foo, dep1, dep2), // or use bind (partial could be a library fn for partial application)
};
}

function foo(dep1, dep2) {
// use dep1/2
}

但我很少看到这种模式。有充分的理由不使用后者吗?

最佳答案

您已经说明了第二种模式的优点。缺点是:

  • 您必须根据可见性对方法进行分组(即使私有(private)方法与公共(public)方法密切相关,但与其他私有(private)方法几乎不相关),或者在对象字面量中重复所有公共(public)方法(这不与 jsdoc 配合良好)。

  • 代码为类的每个实例引入了一个单独的函数对象,这会牺牲一些性能(这通常无关紧要,但有时可能会)

  • 与许多编程语言中的 private 修饰符不同,这种封装是无法绕过的,即使被误用了,而且我真的知道我在做什么(从历史上看,JavaScript 一直是一个无所不能的环境,许多人将其成功归功于这种可扩展性)

关于javascript - JavaScript 中的隐私,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37835861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com