javascript - Java 的类概念和语法,尤其是封装和成员访问,与 Javascript 相比如何?
问题描述
我对 Java 了解很多,但我对 Javascript 完全陌生。我知道一些关于语言本身的背景信息,但仅此而已。现在我使用某个 API,因此我需要 Js。所以我下载了 Node.js 并开始编写一些代码。我已经意识到 Java 有很多不同之处,但我没有找到任何好的解决方案。这是一个例子:
public class Client {
private String username;
private String password;
private String host;
private final int port = 25565;
public Client(String username, String password, String host) {
this.username = username;
this.password = password;
this.host = host;
}
public String getUsername() {
return username;
}
public int getPort() {
return port;
}
public String getPassword() {
return password;
}
public String getHost() {
return host;
}
}
这是 oop 的普通 Java 类。有人可以给我一个例子,如何在 Js 中制作这样的东西以及如何访问这样的类/文件(在 js 中)?
解决方案
我不会给出与 sami 相同的答案,但是还有另一种在 JS 中创建类的方法,它允许变量只能由父级访问:
function Client(username, passwd, host) {
const port = 25565; //this is private
this.getUsername = () => username; //this is public
this.getPort = () => port;
this.getPassword = () => passwd;
this.getHost = () => host;
}
var client = new Client("john doe", "pass", "www.example.com");
client.getUsername(); //returns "john doe"
在 JS 中,类只不过是函数。类的成员函数是闭包。另请注意,由于箭头函数以及Client
构造函数的参数如何被此范围内的闭包访问,代码是多么简洁。您还可以修改它们的值,就像您在此范围内let
或var
在此范围内声明它们一样。
推荐阅读
- r - 删除特殊字符 R dplyr 之后的字符
- laravel - 从刀片中的数据库获取数据
- java - Flutter Doctor 发现两个我无法解决的错误
- javascript - 为什么解构赋值需要括号?
- pandas - Pandas Dataframe:选择每列中出现的所有值
- linux - vim-go 和 vimrc 的问题
- latex - Latex \multirow : 给多行一个倒置的参数移动文本
- python - 使用另一个列表计算一个元素的出现次数时有什么更快的方法
- excel - VBA/Bloomberg:如何声明 BloombergUi
- reactjs - 如何在 React JS 中以 Table 格式显示 API 数据