1

What is encapsulation in context of JavaScript? I'm confused after reading this statement in mozilla web-site(link):

Encapsulation

In the previous example, Student does not need to know how the Person class's walk() method is implemented, but still can use that method; the Student class doesn't need to explicitly define that method unless we want to change it. This is called encapsulation, by which every class inherits the methods of its parent and only needs to define things it wishes to change.

I've understood encapsulation as hiding class members, but in the example on the Mozilla site it seems to be simple inheritance.

4

2 回答 2

1

这意味着您不必能够构建您正在使用的工具来使用它们。

当您可以抽象出类似的东西时,它会使编程的压力减轻很多。


你曾经alert()在 JavaScript 中使用过这个方法吗?

我敢肯定,如果您必须关心如何alert 与浏览器进行通信,以及您的浏览器如何与您的显示器以及介于两者之间的所有层进行通信,您会感到有点不知所措。

您不必担心用于渲染字体的贝塞尔曲线或如何实现ok按钮,或所有其他有效的代码alert。你所知道的是你可以用alert("txt")JavaScript 编写,然后会出现一个对话框。

于 2013-08-28T17:04:26.707 回答
0

walk实施于Person. Student不允许更改它的实现方式,它只能完全覆盖该功能。


您可以设计一种编程语言,允许您覆盖父函数的部分而不是整个函数。这种编程语言有继承但没有封装。

当然,如果一个子函数覆盖了父函数的一部分,这意味着子函数和父函数是耦合的。这通常被认为是不好的做法。这就是为什么大多数语言都强制执行封装的原因,但这并不是您绝对需要的。


也许一个很好的比喻是插件机制。您可以用不同的方式编写插件:使用一些事件挂钩或使用巧妙的继承,但您也可以进行内联代码替换。现在,在您认为这很荒谬之前,流行的论坛软件 phpBB 的旧版本实际上已经这样做了。你可以想象如果你安装了两个可能会干扰的插件会发生什么,不知道会发生什么!

于 2013-08-28T17:03:15.477 回答