问题标签 [data-hiding]

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 回答
107 浏览

javascript - JavaScript - 私人成员解释?

我从 Crockford 阅读这篇文章: http ://www.crockford.com/javascript/private.html

在他谈到私人的部分,他说:

私有成员由构造函数创建。构造函数的普通变量和参数成为私有成员。

现在,如果我在我的脚本中这样做:

我可以轻松访问通过构造函数传递的属性!有人可以更好地解释这一点,通过构造函数传递的这些变量不应该是私有的吗?

谢谢!

0 投票
2 回答
2899 浏览

google-apps-script - Google表格:根据第1行中的日期隐藏列

我没有在 Excel 或 Google Sheets 中编写脚本的经验,所以我正在尝试扩展一下,看看是否有解决我的问题的方法。我们在厨房改造业务中使用 Google 表格作为每周日历。我们从左到右组织周,并在这些列中列出我们目前正在从事的工作。我想自动隐藏日期超过 4 周的所有列,所以当工作表打开时,我们不是从一年前的日期开始的。我可以每周手动隐藏这些列,但是当我确实需要返回查看前几周时,我不得不取消隐藏所有这些列,然后突出显示我想要重新隐藏的所有列。拥有一个脚本似乎是更好的解决方案。

有没有办法在每次打开文件时运行脚本,这样我们总是只显示前 4 周和未来的所有内容?如果是这样,您是否愿意帮助我了解我如何编写它并使其工作?同样,当涉及到公式以外的任何内容时,我还是个新手,但对了解有关脚本功能的更多信息非常感兴趣。

谢谢!

日历

0 投票
2 回答
705 浏览

javascript - Javascript中的封装/数据隐藏?

我想了解 JavaScript 中封装的概念,以及如何使我的属性和方法公开或私有。

我正在玩这个例子:

因此,变量var namevar age是私有的。要访问它们,我通过.this引用使用公共方法。因此,var我的函数内部的任何内容都是私有的,而.this我的对象内部的任何内容在外部都是可见的。

我想这是因为 person 是可见的,所以它暴露了它的所有属性。

我在正确的轨道上吗?这是隐藏或公开您的属性/方法的正确方法吗?

还有一个问题,为什么会console.log(jack.getAge());抛出错误?当引用我“存储”在变量中的函数时,我应该把 () 放在那个函数的末尾,它是双向的,所以我不知道有什么用?

谢谢!

0 投票
1 回答
55 浏览

c++ - 当全局函数需要指向 impl 的指针时,如何防止 impl 详细信息出现在头文件中?

我在我的代码中大量使用pimpl 习惯用法,主要是为了减少编译时间。

我有一种情况,我正在调用 C 库。我有一个 C++ 包装类,它有它的接口,而且血淋淋的细节都在impl,当然:

在 cpp 文件中,我必须向 C 库注册一个回调,并在其中给它一个指针。我想将此函数调用转发给相应的成员函数。客户端(即这个函数的用户)根本不需要知道这个细节:

问题是它some_class::impl被宣布为私有。我只能想到不完美的解决方案:

  1. class impl;在头文件中公开。这并不理想,因为它确实应该是private——它恰好是一个非类函数需要看到的实现细节。
  2. 放入from_c_func头文件,friend就可以了。这并不理想,因为它的实现细节some_class正在泄漏。更改实现可能需要更改头文件,然后重新编译很多不需要重新编译的东西,这会让我不高兴。
  3. 给自己from_c_func一个指针some_class,然后调用一个函数some_class。这需要将该函数放在头文件中,这又是一个实现细节 -public无论如何非朋友函数都必须调用它。

该怎么办?到目前为止,我最好的选择似乎是#1,但有没有更好的方法?

0 投票
9 回答
489 浏览

java - JAVA - 抽象

我对java中的抽象有点困惑。

我检查了许多页面,说明抽象是数据隐藏(隐藏实现)。

我对抽象的理解是它是“部分实现”。只需在抽象类/接口中定义您需要的内容,然后扩展/实现它们并添加您自己的功能。

我不明白这是如何隐藏数据?实现类/接口后,您将可以访问代码,并根据需要对其进行修改。

我已经检查了很多关于此的问题和文章,但仍然对此感到困惑。

任何帮助表示赞赏。谢谢。

0 投票
4 回答
21791 浏览

java - 静态变量是否继承

我已经在 1000 个位置读到静态变量没有被继承。但是,这段代码如何正常工作?

父类.java

子.java

此代码打印“父母”。

还可以在几个位置阅读数据隐藏的概念。

父类.java

子.java

现在输出是“孩子”。

那么这是否意味着静态变量是继承的,但它们遵循数据隐藏的概念

0 投票
1 回答
151 浏览

python - 为什么数据隐藏是 OOP 的关键部分,而不是命令式或函数式编程?

它是否也用于其他编程范例?什么时候和什么时候不使用它的一个很好的例子是什么?

0 投票
0 回答
158 浏览

limits - 速记 - 有什么限制?

我正在做一个速记项目,我设法在封面图像文件中隐藏了一个文本、图像、声音文件。但是,我想知道是否可以将这三者结合起来,以 9 个文件结尾,每个文件中都有隐藏数据。

但是,我遇到了文本文件的问题。我知道在 cmd 行上你可以这样做:notepad new.txt:pass 这将允许你有效地隐藏文本中的文本,但这可以作为速记吗?

另外-是否可以在文本中隐藏 jpeg/mp3?

0 投票
1 回答
480 浏览

java - 在第一页使用不同的表头

我正在使用 iText 并创建一个动态表,该表在方法中有一个重复出现的标题createTabularHeader

然而,在第一页我想显示不同的信息。(但表结构/大小保持不变)

由于以不同方法获得的动态内容,我不能说新页面何时开始。

我尝试了最原始的变体——只是在文本上添加一个白色矩形并插入不同的文本。因为它只是在第一页上,所以我要做的就是在两种方法之间创建那个矩形。但是白色矩形没有任何不透明度,不能覆盖任何东西。

然而,通过尝试,我找到了 writer.getDirectContent().setColorStroke(BaseColor.WHITE);将文本设置为白色的方法。后来我只是BaseColor手动将我的单元格设置为黑色。但是,即使在调用 my createTabularHeader-method 之后应用了新文本,它的图层也在原始文本的图层之下,并且字母部分覆盖了新文本。

使用如何在 PDF 中插入不可见文本的答案?使我想到使用的想法myPdfContentByte.setTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_INVISIBLE);并没有太大帮助,因为无论我做什么,它都只会在第二页重置,并且第一页上的常规文本保持不可见。

我找不到合适的解决方案...如何仅在第一页修改表头?

0 投票
1 回答
133 浏览

c++ - 信息隐藏VS封装

我们知道封装将数据成员和成员函数绑定到有界范围内。现在任何必须对数据(例如私有数据)进行更改的人都必须进入类的范围内。所以当我们谈论数据隐藏时,我们可以说公共成员的范围是全球性的吗?因为他们可以在任何地方访问。如果是,那么它是否违反了封装规则(在哪个范围内有界)?