javascript - 未捕获的语法错误 : Unexpected identifier in Object Literal

标签 javascript jquery html css

我正在学习使用 Javascript Object Literal,我还在 Chrome 的 Javascript 控制台中测试了这个 javascript,它返回了 Uncaught SyntaxError: Unexpected Identifier

工作代码

"use strict";

var myObject = {
    foo: 'bar',

    talk : function(){
        console.log('Hello world')
    }
}

myObject.talk();
console.log(myObject.foo);

但如果我更改为 function talk(){}

"use strict";

var myObject = {
    foo: 'bar',

    function talk(){
        console.log('Hello world')
    }
}

myObject.talk();
console.log(myObject.foo);

它抛出上述错误 Uncaught SyntaxError: Unexpected Identifier。提前致谢。

最佳答案

对象字面量不像构造函数那样工作。

就像lante说的,你必须设置一个标识符并为其分配一个值(或函数)才能使其工作。它基本上就像一个包含键/值对的数组。

构造函数的代码(作为另一种方法):

function myObject() {
    this.foo = 'bar';
    this.talk = function() {
        alert('talk fired');
    }
}

var obj = new myObject();
obj.talk();

构造函数和对象文字之间的区别是:构造函数可以具有私有(private)函数和属性,其中文字始终具有公共(public)访问权限(除非您使用的是内部函数)。 this.talk() 是一个公共(public)函数,可以被外部调用。如果您键入 function talk() 而不是 this.talk 那么它是私有(private)的,不能通过 obj.talk();

关于javascript - 未捕获的语法错误 : Unexpected identifier in Object Literal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27826057/

相关文章:

javascript - 学习Javascript,为什么这两个函数表现不同?

javascript - JQuery .change - 获取事件源

html - 为什么这个 PayPal 按钮没有居中对齐?

html - 如何在浏览器中进行多级高度拉伸(stretch)?

javascript - 如何通过在其他元素上调用上下文来在输入类型 "click"上调用 "file"?

javascript - typescript : add prototype method for a object which implements and interface or extend DTO

Javascript 多词正则表达式

javascript - 构建复选框过滤器以显示/隐藏基于多个 data-* 属性的元素的最佳方法

javascript - 动态生成的 td 标签未显示在页面中

javascript - AngularJS : Why ng-bind is better than {{}} in angular?