【问题标题】:Repeating Value and Replacing Value with JS用JS重复值和替换值
【发布时间】:2018-11-01 20:41:10
【问题描述】:

这里是 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 的代码。

我删除了我编写的所有无用代码。提前感谢您的帮助。

【问题讨论】:

    标签: javascript jquery function javascript-objects


    【解决方案1】:

    你可以用string.repeat()重复字符串

    let a = "ring"
    
    console.log(a.repeat(2))

    但是要让逗号分隔符干净地工作,您可以制作一个一次性数组,join() 带有逗号。

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

    对于其他人,您可能想要使用非常简单的类,但不要在没有 ployfill 的情况下在 IE 上运行。或者原型,一开始可能会有点混乱。下面是一个使用原型在 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"

    【讨论】:

      【解决方案2】:

      1) 您将 samsung.ring 作为函数调用,即使它只是 Phone 的一个实例变量。

      2) this.repeat 不起作用的原因是因为repeat 不是“this”的方法,它指的是Phone。

      试试这个:

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

      【讨论】:

        【解决方案3】:

        不妨试试这个:

        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

        【讨论】:

        • 如果环产生所需的逗号分隔输出会更好(需要计算为“Dada,Dada,Dada”)。
        猜你喜欢
        • 1970-01-01
        • 2021-06-28
        • 2014-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-12
        相关资源
        最近更新 更多