Создание простого объекта Dice без статического свойства сторон, доступного в интерфейсе - PullRequest
0 голосов
/ 02 сентября 2018

Привет всем в сообществе ... Я просто хочу создать простой объект Dice, который позволит пользователю выбрать «пользовательское» или «значение по умолчанию» для числа «сторон», которые будут иметь игральные кости во время создания экземпляра. В то же время «стороны» не являются статическим свойством объекта. И единственным доступным интерфейсом является Dice.roll. Как вы думаете, это справедливое решение?

function Dice(num){
var sides = (num) ? num : 6;
this.roll = Math.floor(Math.random() * sides + 1); // The interface
}
var defaultdice = new Dice();    //  Default Dice, 6 sides
var dice4 = new Dice(4);        //  4 sides Dice
var dice2 = new Dice(2);       //  2 sides Dice 

console.log(defaultdice.roll,' ',dice4.roll,' ',dice2.roll);

1 Ответ

0 голосов
/ 02 сентября 2018

Как вы думаете, это справедливое решение?

выглядит справедливо для меня! Что заставляет вас верить, что это «несправедливо»?


Если вам нужно несколько раз бросить один и тот же экземпляр Dice, я бы предложил превратить свойство roll в функцию; следующим образом,

function Dice(num) {
  var sides = (num) ? num : 6;
  this.roll = function() {
return Math.floor(Math.random() * sides + 1);
  }
}
var defaultdice = new Dice(); //  Default Dice, 6 sides
var dice4 = new Dice(4); //  4 sides Dice
var dice2 = new Dice(2); //  2 sides Dice

console.log(defaultdice.roll(), ' ', dice4.roll(), ' ', dice2.roll());

// Sides is a private class member
// Trying to access it from the instance will return undefined
console.log(dice4.sides);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...