2015-01-07 48 views
1

我使用的JavaScript对象文字的学习,我还测试了这个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。预先感谢。

+0

你没有为函数talk()分配一个对象。 – Chad

+0

类似的属性,你可以为对象创建方法:'talk:function(){};'你可以像这样调用myObject方法。谈论(); – Michelangelo

+0

@Chad我该如何解决?谢谢。 –

回答

0

这是一个功能分配给属性的正确语法:

var myObject = { 
    foo: 'bar', 
    talk: function thisNameIsOptional() { 
     console.log('Hello world') 
    } 
}; 

你也可以这样来做:

var myObject = { 
    foo: 'bar', 
    talk: talk 
}; 

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

正如你所看到的语法总是一样的:

{ 
    literal1: (object or function), 
    literal2: (object or function) 

    ... and so on ... 

} 

你的问题的第二个是错误的。如果这还不够,你有a complete guide for variables and literals on MDN

+0

嗨@lante我怎样才能分配'函数名称(){}'到一个属性? –

+0

我刚刚编辑了我的答案,给你另一种方式来绑定功能到属性 – lante

+0

谢谢@lante这么多,我知道多一点通过你的例子:D –

0

例子是在这里: http://www.w3schools.com/js/js_objects.asp

当你在JavaScript中创建对象(的方式之一),要创建对象的字典。而这样做的方法是确定:

{ 
objectName: objectValue (value or function), 
... 
} 

在第二个例子中,你做了2个错误(这就是为什么它不会编译): - 您可以定义其他功能(范围)内命名的功能,但对象声明不是其中之一 - 您需要将此函数分配给名称,该名称将成为此对象中的指针

这就是为什么您的第一个选项是正确的,而第二个选项是不正确的。

+0

我希望我写了它容易理解 – Beri

+1

w3schools不应该视为参考。适当的参考是ECMAScript标准。 –

1

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

就像lante说的那样,你必须设置一个标识符并为其赋值(或函数)以使其工作。它基本上就像一个带有键/值对的数组。

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

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

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

构造函数和对象文字之间的差异是:构造函数可以具有私有的功能和属性,其中文字始终公共访问(除你正在使用内部功能)。 this.talk()是一个可以从外部调用的公共函数。如果你输入function talk()而不是this.talk那么它是私人的,不能通过调用obj.talk();

+0

谢谢你解释:) –

相关问题