2015-01-07 2 views
1
내가 자바 스크립트 객체 리터럴을 사용하여 배우고

는 또한 크롬의 자바 스크립트 콘솔에서이 자바 스크립트를 테스트하고이 코드를catch되지 않은 구문 에러 : 리터럴 객체에서 예기치 않은 식별자는

"use strict"; 

var myObject = { 
    foo: 'bar', 

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

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

그러나 경우 작업 Uncaught SyntaxError: Unexpected Identifier

을 반환 내가 function talk(){}

"use strict"; 

var myObject = { 
    foo: 'bar', 

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

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

위의 오류 012를 throw합니다.. 미리 감사드립니다.

+0

개체에 'function 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 속성에'function name() {}'을 어떻게 할당 할 수 있습니까? –

+0

방금 ​​방금 함수를 속성에 바인딩하는 다른 방법을 제공하기 위해 내 대답을 편집했습니다. – lante

+0

@lante에 감사드립니다. 예제를 통해 조금 더 알고 있습니다. –

0

예는 여기에 있습니다 : http://www.w3schools.com/js/js_objects.asp

당신이 자바 스크립트의 객체 (가지 방법 중 하나를) 만들 , 당신은 개체의 사전을 만들 수 있습니다. 다른 기능 (범위) 내 이름이 지정된 함수를 정의 할 수 있지만 - : 당신이 실수를 (이 컴파일되지 않습니다 그 이유는) 만들었다 두 번째 예에서

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

을 : 그리고이 작업을 수행하는 방법은 할당한다 객체 선언이 하나도 아닙니다. - 이름에이 함수를 할당해야합니다.이 객체의 포인터입니다.

첫 번째 옵션이 올바른 이유는 무엇이며 두 번째 옵션은 올바르지 않습니다.

+0

w3schools는 이해하기 쉽도록 작성했습니다. – Beri

+1

참조로 간주됩니다. 적절한 참조는 ECMAScript 표준입니다. –

1

개체 리터럴은 생성자 함수처럼 작동하지 않습니다.

lante가 말했듯이 식별자를 설정하고 값을 지정하여 기능을 작동시켜야합니다. 이것은 기본적으로 키/값 쌍을 가진 배열과 같습니다.

(다른 방법으로) 생성자 함수의 코드 : 생성자 기능 및 개체 리터럴 사이

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

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

차이점은 : 생성자 함수 리터럴 항상 공용 액세스 전용 기능 및 특성을 가질 수있다 (단 당신은 내부 기능을 사용하고 있습니다). this.talk()은 외부에서 호출 할 수있는 공용 함수입니다. this.talk 대신 function talk()을 입력하면 비공개이며 을 입력 할 수 없습니다.

+0

설명해 주셔서 감사합니다. :) –

관련 문제