簡體   English   中英

沒有instanciation的JavaScript類定義

[英]JavaScript class definition without instanciation

我想在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中的屬性但我仍然希望它們是在從字符串創建的JS對象中聲明(但未設置)。

我怎樣才能讓事情奏效?

您需要將其設為object而不是類,然后在收到JSON時填充屬性。

你應該使用類似的東西:

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

然后,您可以使用Person.name等訪問Person對象的屬性。

反序列化將非常簡單

Person = FunctionThatGivesYouAPersonObjectInJSON();

JSON是用於Java Script對象的表示法,因此您不需要將這些變量存儲在類中。 只需將其存儲在普通對象中即可。 例如,如果要從ajax請求中恢復JSON對象,則可以將其存儲為普通變量。

所以只需使用該對象。

你定義了這種方式的類。

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)

在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中,您可以在“設置”中進行選擇:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM