JavaScript лучший способ создать объект с помощью метода, используя функцию - PullRequest
3 голосов
/ 20 марта 2019

Я новичок в javascript и пытаюсь создать объект, который затем можно заполнить списком экземпляров. Этот код у меня работает, но он чувствует себя избыточным, чтобы иметь «это». Ключевое слово в каждой строке. Есть ли более аккуратный / более подходящий способ создания такого объекта?

Вот мой текущий объект:

    var Particle = function(x, y) {
    this.x = x;
    this.y = y;
    this.xspeed = 0;
    this.yspeed = 0;
    this.xacc = 0;
    this.yacc = 0;

    this.update = function() {
        this.x += this.xspeed;
        this.y += this.yspeed;
        this.xspeed += this.xacc;
        this.yspeed += this.yacc;
    }
}

Спасибо за вашу помощь заранее

Ответы [ 3 ]

1 голос
/ 20 марта 2019

К сожалению, this является обязательным в Javascript, даже если другие языки его выводят.

Сегодня Классы Ecmascript поддерживаются любым браузером, кроме 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);
1 голос
/ 20 марта 2019

Вы можете использовать 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;
  },
});
0 голосов
/ 20 марта 2019

Что касается высокого использования this, вы можете использовать Object.assign, чтобы исправить интенсивное использование присвоения значений в базовом коде. (this.value = value)

, поскольку вам нужно несколько экземпляров с их собственными значениями, логично использовать область действия this для значений, которые вы хотите использовать. (используя значения, определенные в области действия this)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...