Javascript 这个.x是不可编辑的

Javascript 这个.x是不可编辑的,javascript,debugging,iterator,Javascript,Debugging,Iterator,我试图将一个变量传递给一个对象中的一个方法,但我一直得到这样一个错误:短语不可编辑 我使用两个对象,并将变量从一个对象传递到另一个对象 短语类 console.clear() 类短语{ 构造器(短语){ log(“短语构造函数”) 这个短语=短语; } addPhraseToDisplay(){ log(“短语addPhraseToDisplay”) 让arr=[…这个短语]; arr.forEach(字母=>{ 设li=$(`${letter}`); 如果(字母!=''){ li.addCl

我试图将一个变量传递给一个对象中的一个方法,但我一直得到这样一个错误:短语不可编辑

我使用两个对象,并将变量从一个对象传递到另一个对象

短语类

console.clear()
类短语{
构造器(短语){
log(“短语构造函数”)
这个短语=短语;
}
addPhraseToDisplay(){
log(“短语addPhraseToDisplay”)
让arr=[…这个短语];
arr.forEach(字母=>{
设li=$(`
  • ${letter}
  • `); 如果(字母!=''){ li.addClass(`hide letter${letter}`); $('短语ul')。附加(li); }否则{ 设li=$(`
  • ${letter}
  • `); li.addClass(“隐藏空间”); $('短语ul')。附加(li); } 回信; }); } } 班级游戏{ 构造函数(){ log(“游戏构造函数”) 这个值=0; //直接将短语放入构造函数中 this.phrases=[新短语(“hello world”), 新词语(“华尔街上的狼”), 新词语(“尽管作出”), 新短语(“Karen带走了孩子”), 新短语(“好吧,就要出发了”) ]; this.activePhrase=null; } getRandomPhase(){ log(“Game getrandomPhase()”) //返回5个随机短语 返回此.phrases[Math.floor(Math.random()*this.phrases.length)]; } startGame(){ 控制台日志(“游戏开始名”) 让hid=document.getElementById('overlay'); hid.style.display=“无”; 设phrs=this.getRandomPhase(); 设stor=新短语(phrs); stor.addPhraseToDisplay(); } } g=新游戏() g、 startName()

    您的错误是,您使用此

    let stor = new Phrase(phrs);
    
    摆脱这个,它就会起作用

    console.clear()
    类短语{
    构造器(短语){
    log(“短语构造函数”)
    这个短语=短语;
    }
    addPhraseToDisplay(){
    log(“短语addPhraseToDisplay”)
    让arr=[…这个短语];
    arr.forEach(字母=>{
    设li=$(`
  • ${letter}
  • `); 如果(字母!=''){ li.addClass(`hide letter${letter}`); $('短语ul')。附加(li); }否则{ 设li=$(`
  • ${letter}
  • `); li.addClass(“隐藏空间”); $('短语ul')。附加(li); } 回信; }); } } 班级游戏{ 构造函数(){ log(“游戏构造函数”) 这个值=0; //直接将短语放入构造函数中 this.phrases=[新短语(“hello world”), 新词语(“华尔街上的狼”), 新词语(“尽管作出”), 新短语(“Karen带走了孩子”), 新短语(“好吧,就要出发了”) ]; this.activePhrase=null; } getRandomPhase(){ log(“Game getrandomPhase()”) //返回5个随机短语 返回此.phrases[Math.floor(Math.random()*this.phrases.length)]; } startGame(){ 控制台日志(“游戏开始名”) 让hid=document.getElementById('overlay'); hid.style.display=“无”; 设phrs=this.getRandomPhase(); //设stor=新短语(phrs); phrs.addPhraseToDisplay(); } } g=新游戏() g、 startName()
    
    

      这里有另一种解决方法。由于以下几行,您得到了错误:

      let phrs = this.getRandomPhrase(); // phrs is an instance of Phrase
      let stor = new Phrase(phrs); // stor is new Phrase(new Phrase(...))
      stor.addPhraseToDisplay();
      
      按照代码的方式,
      phrs
      已经是
      短语的一个实例。因此,您将
      stor
      声明为
      新短语(新短语(/*some string*/)
      。该错误是由于在
      短语
      构造函数的输入上使用扩展语法而导致的。当输入是
      字符串
      时,这可以正常工作,但在
      短语
      的实例上使用扩展语法,这是不可编辑的;e、 例如,
      […新短语('abc')]

      只需从
      this.phrases
      中删除
      短语
      构造函数调用,并将其作为字符串数组实现;然后将不再触发该错误:

      console.clear()
      类短语{
      构造器(短语){
      log(“短语构造函数”)
      这个短语=短语;
      }
      addPhraseToDisplay(){
      log(“短语addPhraseToDisplay”)
      让arr=[…这个短语];
      arr.forEach(字母=>{
      设li=$(`
    • ${letter}
    • `); 如果(字母!=''){ li.addClass(`hide letter${letter}`); $('短语ul')。附加(li); }否则{ 设li=$(`
    • ${letter}
    • `); li.addClass(“隐藏空间”); $('短语ul')。附加(li); } 回信; }); } } 班级游戏{ 构造函数(){ log(“游戏构造函数”) 这个值=0; //直接将短语放入构造函数中 这个短语=[ “你好,世界”, “华尔街的狼”, “尽管制造了”, “凯伦带走了孩子”, “好的,我要出发了” ]; this.activePhrase=null; } getRandomPhase(){ log(“Game getrandomPhase()”) //返回5个随机短语 返回此.phrases[Math.floor(Math.random()*this.phrases.length)]; } startGame(){ 控制台日志(“游戏开始名”) 让hid=document.getElementById('overlay'); hid.style.display=“无”; 设phrs=this.getRandomPhase(); 设stor=新短语(phrs); stor.addPhraseToDisplay(); } } g=新游戏() g、 startName()
      
      

        您如何调用这些类?大概这是因为
        startGame
        中的
        phrs
        是一个对象,然后您尝试使用
        […这个短语]
        来传播它…