没有instanciation的JavaScript类定义

时间:2017-07-17 16:00:47

标签: javascript json

我想在JS中定义一个空数据类,然后用JSON填充它。 在c#中我做了类似的事情:

class Person {
    string name;
    int age;
    Person[] children;
    var whatever;
}

这不起作用,IDE不喜欢它:"意外的令牌。期望构造函数,方法,访问者或属性"。

我已经尝试了

class Person {
    var name;
    var age;
    var children;
    var whatever;
}

但我没有使用JS的经验,而且我看到所有声明的变量都是立即定义的。

我不理解错误,因为我认为这些是属性,并且我不知道JSON反序列化器关于对象数组的行为,知道所述对象可能缺少JSON中的属性但我和#39;仍然希望它们在从字符串创建的JS对象中声明(但不设置)。

我怎样才能让事情奏效?

4 个答案:

答案 0 :(得分:3)

您需要将其设为object而不是类,然后在收到JSON时填写属性。

你应该使用类似的东西:

var Person = {
    name: '',
    age: '',
    children: '',
    whatever: ''
}

然后,您可以使用Person等访问Person.name对象的属性。

反序列化就像

一样简单
Person = FunctionThatGivesYouAPersonObjectInJSON();

答案 1 :(得分:0)

JSON是用于Java Script对象的符号,因此您无需将这些变量存储在类中。只需将其存储在普通对象中即可。例如,如果要从ajax请求中恢复JSON对象,则可以将其存储为普通变量。

所以只需使用该对象。

答案 2 :(得分:0)

你用这种方式定义一个类。

class Person{
 constructor(name, age, children, whatever) {
  this._name = name;
  this._age = age;
  this._children = children;
  this._whatever = whatever;
  }
}

要实例化,请执行此操作。

var chris = new Person('Chris', 25, 2, 1)

答案 3 :(得分:0)

在ECMAScript6中,您可以使用JavaScript实现类:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes

因此您必须将代码更改为:

class Person{
  constructor(age, name) {
    this.age = age;
    this.name = name;
  }
}

此外,问题可能出在您的IDE设置中。通常在IDE中,您可以选择要使用的语言版本。例如,在WebStorm中,您可以在“设置”中选择:

enter image description here