我是javascript新手,正在尝试创建一个对象,然后可以使用的实例填充列表。我拥有的这段代码有效,但是拥有“ this”感觉很多余。每行关键字。有没有更整洁/更合适的方式来创建这样的对象?
这是我当前的对象:
Usage
SENNA reads input sentences from the standard input
and outputs tags into the standard output.
The most likely command line usage for SENNA is therefore:
senna [options] < input.txt > output.txt
Of course you can run SENNA in an interactive mode
without the "pipes" < and >.
Each input line is considered as a sentence.
SENNA has its own tokenizer for separating words,
which can be deactivated with the -usrtokens option.
非常感谢您的帮助
答案 0 :(得分:1)
您可以使用Object.assign
和对象文字:
var Particle = function(x, y) {
Object.assign(this, {
x, y,
xspeed: 0,
yspeed: 0,
xacc: 0,
yacc:0,
});
//...
};
由于您不使用继承,因此还可以返回一个新对象:
const Particle = (x, y) => ({
x, y,
xspeed: 0,
yspeed: 0,
xacc: 0,
yacc:0,
update() {
this.x += this.xspeed;
this.y += this.yspeed;
this.xspeed += this.xacc;
this.yspeed += this.yacc;
},
});
答案 1 :(得分:1)
不幸的是,this
在Javascript中是强制性的,即使其他语言也可以推论它。
今天Ecmascript classes are supported by any browser excepting IE。如果要使用面向对象的编程,这可能是使用类语法的好方法。
class Particle {
constructor(x, y) {
this.x = x;
this.y = y;
this.xspeed = 0;
this.yspeed = 0;
this.xacc = 0;
this.yacc = 0;
}
update() {
this.x += this.xspeed;
this.y += this.yspeed;
this.xspeed += this.xacc;
this.yspeed += this.yacc;
}
}
const particle = new Particle(1, 2);
particle.update();
console.log(particle);
答案 2 :(得分:0)
关于this
的高使用率,您可以使用Object.assign
来修复基本代码中对值分配的高使用率。 (this.value = value
)
由于您希望多个实例具有各自的值,因此将this
范围用于要使用的值是合乎逻辑的。 (使用this
范围中定义的值)