javascript - 封装在 Javascript 中

标签 javascript oop encapsulation

我是 Javascript 的新手,我的 SO 个人资料可以证明这一点。

我刚刚阅读了一些教程,遇到了一些我在应用 Javascript 时对面向对象和封装不完全理解的东西。

教程指出 Javascript 对象可以这样声明:

var myCustomObject = new Object();

你可以像这样给它实例变量:

myCustomObject.myVariable = "some value";
myCustomObject.myOtherVariable = "deadbeef";

最后,它指出您可以创建一个模板函数来创建新对象,如下所示:

function CustomObject(myVariable, myOtherVariable)
{
    this.myVariable = myVariable;
    this.myOtherVariable = myOtherVariable;
}

我还知道您可以为尚不存在的变量创建和赋值,结果是隐式声明,如示例中所示,其中 myCustomObject 没有 myVariable,但现在可以了。

所以,我的问题是:有什么可以防止在代码的其他位置添加新变量。如果我试图了解一个对象是如何工作的以及我可以/应该用它做什么,我可能永远不会看到很可能在其他一些 .js 文件中的变量添加,因此无法完全理解该对象。 ..

另外,我怎么知道刚刚创建的某个对象不会突然在代码中添加了 60 个在创建时根本没有提到的变量?

如果可以“随心所欲”地向对象添加更多内容,你怎么能一眼就理解对象可以包含什么?

最佳答案

我不太相信我要引用蜘蛛侠的话,但是......

With great power comes great responsibility

JavaScript 强大而灵活,给程序员很大的自由度。它没有旨在阻止程序员编写错误代码的功能。当您编写 JavaScript 时,您有责任确保代码是好的,而不是语言。

关于javascript - 封装在 Javascript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3967008/

相关文章:

C# - 在引用类型上使用私有(private) setter 和公共(public) getter

javascript - 用于 Google 电子表格的 JavaScript 学生 t 分布

javascript - contact form 7提交成功后如何打开弹窗

python - 是否有任何内置的 lambda for is notNone in python

oop - 类属性声明: private vs public

java - 尝试封装时获取 "Null Object Reference"

javascript - 将输入值传递给 JavaScript 函数

javascript - Bootstrap 将 nav 和 nav-pills 添加到我的下拉列表中

c# - 检查 List<MyClass> 是否包含某些 MyClass 对象的副本的正确方法是什么?

具有调用私有(private)方法的静态方法的 Ruby 类?