[英]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.