[英]Test class instanciation within a method using a spy in Javascript (Jasmine/Mocha)
[英]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.