【问题标题】:what's wrong with my code in creating a method in object literal notation?我的代码在以对象文字表示法创建方法时有什么问题?
【发布时间】:2013-07-03 11:53:12
【问题描述】:

半小时前我问了一个关于creating a method in object literal notation 的问题。我得到了很好的答案,但我的代码仍然有问题。我被告知要创建一个新问题,就在这里。请不要以效率来判断代码。我知道我在每个对象中使用了许多 bio 方法 3 次,当时我可以做 1 个函数,但我这样做是为了更多地了解对象、函数和方法。

这是我的代码。

var object1 = new Object()
object1.name = "Neymar";
object1.age = 22;
object1.club = "Barca";
object1.bio = function (){
    console.log(this.name +" is "+ this.age + " years old and he is playing in "+ this.club);
};
var object2 = {
name: "Fred",
age: 28,
club: "Fluminense"
bio2: function (){
    console.log(this.name +" is "+ this.age + " years old and he is playing in "+ this.club);
    };
};
var object3 = {
name: "Hulk",
age: 27,
club: "Zenit St. Petersburg"
bio3: function (){
    console.log(this.name +" is "+ this.age + " years old and he is playing in "+ this.club);
    };
};
object1.bio();
object2.bio2();
object3.bio3();

CodeAcademy 说第 12 行缺少 }:bio2: function (){

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你忘了在前一个属性后面加逗号,所以它认为它是文字的结尾。也许expected ',' or '}' 会是一个更好的消息。此外,在对象文字内,您不允许放置行分隔符(分号)。应该是

    var object2 = {
        name: "Fred",
        age: 28,
        club: "Fluminense",
    //                    ^
        bio2: function() {
            console.log(this.name +" is "+ this.age + " years old and he is playing in "+ this.club);
        }
    //   ^
    };
    var object3 = {
        name: "Hulk",
        age: 27,
        club: "Zenit St. Petersburg",
    //                              ^
        bio3: function() {
            console.log(this.name +" is "+ this.age + " years old and he is playing in "+ this.club);
        }
    //   ^
    };
    

    【讨论】:

      【解决方案2】:

      您在club: "Fluminense"club: "Zenit St. Petersburg" 之后忘记了,

      【讨论】:

        【解决方案3】:

        你的对象应该是这样的,

        var object2 = {
           name: "Fred",
           age: 28,
           club: "Fluminense",
           bio2: function (){
              console.log(this.name +" is "+ this.age + " years old and he is playing in "+ this.club);
           }
        };
        

        你在 js 对象中永远不会有分号——无论如何你都有分号,而且你也不应该在对象的最后一项上有逗号——它在 IE 中会中断

        你也忘记了function前面的逗号

        快速提示。在调试 javascript 时,错误可能是由上面的行引起的,我建议转到 http://jsfiddle.net 并使用内置的 jsHint 工具

        【讨论】:

          【解决方案4】:

          您在club: "Fluminense"club: "Zenit St. Petersburg" 之后错过了一个常见的(,)。您还必须从对象参数的末尾删除行尾分隔符 (;)。

          var object2 = {
              name: "Fred",
              age: 28,
              club: "Fluminense",
              bio2: function (){
              console.log(this.name +" is "+ this.age + " years old and he is playing in "+ this.club);
          }
          
          };
          var object3 = {
              name: "Hulk",
              age: 27,
              club: "Zenit St. Petersburg",
              bio3: function (){
              console.log(this.name +" is "+ this.age + " years old and he is playing in "+ this.club);
          }
          

          【讨论】:

            猜你喜欢
            • 2013-07-03
            • 2012-07-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-18
            • 1970-01-01
            • 2017-08-01
            • 2011-12-03
            相关资源
            最近更新 更多