问题标签 [private-members]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
257 浏览

visual-studio - Visual Studio:当私有或内部成员没有引用时发出警告

有没有办法让视觉工作室警告私人成员在类中没有任何引用?在包/模块中没有引用的内部成员怎么样?

我一直在重构我的代码,我不想保留 [右键单击] --> 为我的代码库中的每个成员查找所有引用,以确保我已经删除了所有垃圾。一定有更好的方法...

0 投票
10 回答
101525 浏览

java - 为什么外部 Java 类可以访问内部类私有成员?

我观察到外部类可以访问内部类私有实例变量。这怎么可能?这是一个演示相同的示例代码:

为什么允许这种行为?

0 投票
5 回答
5793 浏览

javascript - 如何在 JavaScript 中继承私有成员?

JavaScript中有没有办法将私有成员从基类继承到子类?

我想实现这样的目标:

如何实现类模拟,就像在其他 oop 语言(例如 C++)中我可以继承私有(受保护)属性一样?

谢谢你,大卫施赖伯

0 投票
1 回答
1885 浏览

reflection - 如何通过 AspectJ 中的特权 Aspect 以编程方式访问私有成员?

我想知道是否可以在 AspectJ 中执行以下操作。我正在向 RubyObject 类的每个对象添加一个方法 .inspect()。该方法应该吐出一个字符串,如 #(CompleteClassName, var1=val1, var2=val2, ...)

到目前为止一切顺利, this.getClass().getFields() 让我得到了我想要的所有可见字段, this.getClass().getDeclaredFields() 加上 Modifier.isPrivate(field.getModifiers())) 给了我一个列表所有的私人领域..

这里的问题是我无法像使用可见字段那样检索私有字段的值。我想这是正常的,因为我使用的反射 API 不是 AspectJ 的一部分,所以他们不知道我在这里运行所谓的特权方面。

由于我处于特权模式,我可以使用 this.privateVariableName 访问我想要的所有私有变量,但是当变量名本身在变量中时,我该如何以编程方式进行呢?

谢谢你的帮助..

0 投票
7 回答
246 浏览

private-members - 将公共成员函数分解为许多私有成员函数

当我编写一个类的公共成员函数时,它会做几件事,比如..

在该函数中,我发现自己将其拆分为几个私有成员函数。将公共成员函数拆分为多个函数是没有意义的,因为如果没有另一个,你就不会做一件事,而且我不希望用户担心按什么顺序等等。相反,RunLogic() 函数会看起来像这样...

DoThing 函数是私有成员函数。在 Code Complete 中,Steve McConnel 建议减少类中的函数数量,但我宁愿不要只将所有代码放入一个函数中。我对他真正含义的假设是一个类不应该有太多的功能,但我只是想知道其他程序员对此有何看法。

此外,我一直致力于在我的公共成员函数中公开越来越少的实现细节,并将大部分工作转移到小型私有成员函数中。显然,这创造了更多的功能......但这就是问题所在。

0 投票
2 回答
924 浏览

c# - 如何在 C# 中获取私有成员值

我想获得私人成员的价值,所以我写了以下内容:

但是方法“GetValue”需要第一个参数中的原始对象,而我没有这个对象,因为我进入运行时。谁能帮帮我?!

0 投票
6 回答
47119 浏览

ruby - 如何在 Ruby 中将实例变量设为私有?

有没有办法在 ruby​​ 中使实例变量“私有”(C++ 或 Java 定义)?换句话说,我希望以下代码导致错误。

0 投票
4 回答
2161 浏览

c# - 如何处理私有成员访问器和集合?

我有这样的班级层次结构

现在我想编写一个单元测试来比较 A 的两个实例是否在属性 KeyedCollection 中具有相同的项目 B。但是,我无法在 A 实例中执行 foreach 循环。我试过的,

这段代码甚至无法编译,因为 C 类访问器没有实现 IEnumerable 接口(它没有实现 KeyedCollection 类的任何接口)。有谁知道我该如何克服这个问题?

我收到的错误消息是

foreach 语句不能对“C”类型的变量进行操作,因为“A_Accessor.C”不包含“GetEnumerator”的公共定义

0 投票
4 回答
989 浏览

javascript - Javascript私有方法——内存影响是什么?

我正在编写一些代码,试图在闭包中隐藏一些私有变量。问题是环境在内存方面受到了相当大的限制,所以我还关心保持类的整体占用空间较低。

与仅将对象上的所有方法和变量公开相比,使用闭包隐藏私有实例变量和方法有什么影响?使用闭包的实例会比不使用闭包的实例占用更多内存吗?如果是这样,我希望使用多少内存?

我的代码看起来像这样

相对

.... 继续并定义所有其余的方法。

0 投票
2 回答
1927 浏览

javascript - 创建同一类的对象:Javascript原型、私有成员、继承

有些代码可能会说一千多个单词:

资源对象是被认为是不可变的值对象。它们在加法操作中返回一个新对象。现在,我不只是调用“new Resource(args)”来创建要返回的新对象,而是基于旧对象创建了一个新对象。这也允许继承。

当我开始在我所有的 ValueObjects 上使用它时(以防我将来想从它们继承),我开始更多地考虑这个问题。

JavaScript 不允许不可变对象。然而,通过直接方法覆盖或调用其构造函数,对象很容易受到攻击。我所能做的就是确定这些是坏习惯。不幸的是,ECMAScript5“冻结”还没有出现,尽管我的模式与它兼容。

既然我有这种在不可变对象上调用构造函数以及代码重复的“坏风格”,我正在考虑创建一个新函数来封装这个过程:

因此:

也许有人对这个函数的名称有更好的想法。“重建”是我的第一个想法。您如何看待这种模式?是不是过于抽象了?我应该把它保存到我确定会继承的类吗?我错过了什么重要的事情吗?

编辑:我看到我忘了提到一些重要的东西,目前在这篇文章中没有反映出来。使用 Object.create 可以轻松克隆 ValueObject。他们的私人成员是不变的。但是可变的私人成员呢?如果在克隆上调用 set(),它将在闭包中设置原始原型对象!当我的 Object.recreate 重新创建闭包时,这个问题就解决了。

那么有没有更好的方法来继承私有变量呢?为什么每个人都使用糖来创建课程?我已经阅读了很多关于原型主义的内容,但我仍然没有掌握它的窍门。