Повторение значения и замена значения с помощью JS - PullRequest
0 голосов
/ 23 мая 2018

Новичок в JS здесь.У меня проблемы с заменой и повторением значения из функции.Вот код:

function Phone(ring) {
  this.ring = ring;
}
function updateRing(newRing) {  
  this.newRing = ring;
}

var samsung = new Phone('Chim');
samsung.ring(2); // Needs to compute to "Chim, Chim"

var htc = new Phone('Dada');
htc.ring(3); // Needs to compute to "Dada, Dada, Dada"
htc.updateRing('Riri');
htc.ring(1); // Needs to compute to "Riri"

Для значения повтора для первой функции я попытался использовать this.repeat , но он не работал внутри функции Phone .

Для функции updateRing я не смог получить код для замены this.ring .

Я удалил все бесполезныекод, который я написал.Заранее спасибо за любую помощь.

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Может быть, попробовать это:

class Phone {
  constructor(sound) {
    this.sound = sound;
  }
  ring(number) {
    var i;
    for (i = 0; i < number; i++) { 
      console.log(this.sound + ", ");
    }
  }
  updateRing(newSound) {
    this.sound = newSound;
  }
}

var samsung = new Phone('Chim');
samsung.ring(2);
samsung.updateRing('Riri');
samsung.ring(1);

Codepen - https://codepen.io/anon/pen/MGRJOB?editors=0010

0 голосов
/ 23 мая 2018

1) Вы вызываете samsung.ring как функцию, хотя это просто переменная экземпляра Phone.

2) Причина, по которой this.repeat не работаетпотому что повторение не является методом «это», который относится к телефону.

Попробуйте вместо этого:

var samsung = new Phone('Chim');
samsung.ring.repeat(2);

var htc = new Phone('Dada');
htc.ring.repeat(3);
0 голосов
/ 23 мая 2018

Вы можете повторить строки с string.repeat()

let a = "ring"

console.log(a.repeat(2))

Но для правильной работы разделителя запятых можно создать одноразовый массив, а join() - с запятой.

let ringString = Array(3).fill("ring").join(", ")
console.log(ringString)

Для других вы, вероятно, захотите использовать классы, которые довольно просты, но не запускаются в IE без ployfill.Или прототипы, которые поначалу могут немного запутать.Вот пример использования прототипов для определения методов вашего Phone объекта:

function Phone(ring) {
  // changed to ring_tone too prevent clash with this.ring method
  this.ring_tone = ring;
}
// you need to define these on the prototype to you can use `this`
Phone.prototype.updateRing = function(newRing) {
  // don't need to define a this.newRing, just update the ring
  this.ring_tone = newRing;
}

Phone.prototype.ring = function(n) {
  return new Array(n).fill(this.ring_tone).join(', ')

}

var samsung = new Phone('Chim');
console.log(samsung.ring(2)); // Needs to compute to "Chim, Chim"

var htc = new Phone('Dada');
console.log(htc.ring(3)); // Needs to compute to "Dada, Dada, Dada"

htc.updateRing('Riri');
console.log(htc.ring(1)); // Needs to compute to "Riri"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...