Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在node.js的for循环中使用类_Javascript_Node.js - Fatal编程技术网

Javascript 在node.js的for循环中使用类

Javascript 在node.js的for循环中使用类,javascript,node.js,Javascript,Node.js,老实说,我不知道该问什么,所以我只想补充一些细节。我来自java,所以我对类很熟悉 让我们以一个类为例,为了方便起见,将私有字段放到public中,而不使用getter和setter class User{ public String name; public String email; } 这在某些情况下很有用,例如,如果有一组用户,那么我可以使用如下内容: for(User user: usersList){ user.name='some new value' //sin

老实说,我不知道该问什么,所以我只想补充一些细节。我来自java,所以我对类很熟悉

让我们以一个类为例,为了方便起见,将私有字段放到public中,而不使用getter和setter

class User{
 public String name;
 public String email;
}
这在某些情况下很有用,例如,如果有一组用户,那么我可以使用如下内容:

for(User user: usersList){
   user.name='some new value'
   //since user is a class, code assist, suggests the name and also if I have user.namee it throws an error
}
现在进入javascript,我可以获得一个数组并执行如下操作

for (let user of usersList){
    user.name='some new value'
    //however if I type user.nammee no error is thrown and code assist does not know what to recomment
}

我想现在你可能明白了。我希望它能使使用代码辅助更容易地正确获取对象字段,并避免由于属性名键入错误而导致的键入错误。我看到的Javascript类只有方法。。。那么,在这种情况下我可以应用什么呢?

您可以用javascript来实现这一点。正因为如此,您的userslist将是一个数组,您将在其中拥有您的用户。循环将用于从0到长度-1的循环。这个类将有一些类似这样的语法

var userclass={ 名称:'xyz', 地址:'地址', ……其他道具
}JavaScript允许引用对象没有的属性:您可以临时添加它们,如果您读取不存在的属性,您只会得到未定义的
。这就是JavaScript的工作原理

如果您试图在分配给不存在的属性时出错,那么考虑使用该方法,您可以在类的构造函数中应用该方法:

“严格使用”;
类用户{
建造商(姓名、电子邮件){
this.name=名称;
this.email=电子邮件;
//Seal将不允许新的属性
对象.印章(本);
}
}
const user=新用户();
user.name=“杰夫”;
console.log(用户);//显示带有“Jeff”的属性
user.nammeee=“杰夫”//产生错误
签出


由于
userList
被认为是类型
User[]
let User
也被认为是类型
let User:User

你可以在一个类中使用getter和setter方法。关于代码辅助的问题实际上更多地与你的编辑器有关,而不是与JavaScript有关。我指的是类功能,因为它有助于代码辅助。IDE知道类属性,因此可以使用它进行验证…您指的是哪个IDE?如果您喜欢Java和静态类型,请查看TypeScript。Javascript是一种脚本语言,不提供这种东西。我想你误解了这个问题。
class User {
    constructor(public name: string, public email: string = "") { }

    /*
    //shorthand for

    public name: string;
    public email: string;

    constructor(name:string, email:string="") { 
        this.name = name;
        this.email = email;
    }
    */
}

var usersList = [
    new User("Jack"),
    new User("Jill"),
    new User("Joe")
];

for (let user of usersList) { 
    user.email = user.name + "@mail.com";
}