2013-02-25 1 views
4

Javascript도 ActionScript와 마찬가지로 Function 키워드를 지원합니다. 둘 다 ECMA 스크립트에서 파생 되었기 때문에 이러한 유사성의 존재는 일반적인 지식입니다. 그러나 내가 궁금한 점은 무엇입니까 기능은 자바 스크립트의 경우를 나타내며 그렇지 않은 경우 (as3의 경우)를 나타냅니다. JS에서 Javascript에서 '함수'('함수'가 아님)는 어떻게 정의됩니까?

,

var func = new Function(); 또는

var func = new Function; 변수 'FUNC'에서 '익명'라는 기능을 할당한다.

이 같은 방식으로 그것을 구현하는 것 대부분의 브라우저 (FF, 즉 & 크롬) 이후

.. 객체 지향 방법의 실제 '기능'을 구현하는 단순한 방법이 될 수는 해결하다 사양에?

+0

이 링크 확인 [link] http://stackoverflow.com/questions/336859/javascript-var-functionname-function-vs-function-functionname –

+1

'Function'은 실제로 키워드가 아닙니다. 객체 생성자의 이름으로 사용되는 식별자입니다. 함수는 객체이지만, 객체를 만들 때 다른 구문이 허용됩니다. –

+3

여기에 : http://es5.github.com/#x15.3.2 –

답변

6

Function은 모든 기능이 확장 된 "클래스"입니다. 모든 기능은 실제로 Function 개체입니다.

(function(){}) instanceof Function === true 

또한 문자열 (같은이 eval)에서 작동하도록 new Function를 사용할 수 있습니다.

var func = new Function('x,y', 'return x+y;') 
+1

마지막 예제에서 인용 부호를 잊어 버렸습니다. 쉼표로 분리 된 문자열 대신 생성자에 대한 별도의 문자열 인수가되어야합니다. –

+0

@ 시스템 :/또는 :-) 중 하나 일 수 있습니다. http://es5.github.com/#x15.3.2.1에서 노트를 참조하십시오. –

+0

정말요? 내 사과. 나는 결코 그것을 알지 못했다. –

-1

1 방법 :

var Person = function() { 
    this.name; 
    this.age; 
} 

var p1 = new Person(); 

두번째 방법 :

function Person() { 
    this.name; 
    this.age; 
} 

var p1 = new Person(); 
+1

이것은 Function 생성자가 아니라 함수 표현식과 함수 선언에 관한 것입니다. –

+0

이 질문은 묻지 않습니다. –

2

"자바 스크립트의 모든 기능은 실제로 함수 객체입니다." MDN Documentation.

function myFunc(a, b) { 
    console.log('test'); 
} 

함수를 선언하는 두 가지 방법에 약간의 차이가 있지만있다

var myFunc = new Function('a', 'b', 'console.log("test")'); 

본질적으로 동일하다. 문서 읽기!

+1

그들은 매우 비슷하지만 몇 가지 중요한 차이점이 있습니다. 첫 번째 구문은 "게양 (hoisted)"될 것입니다. 그러나 더 중요한 것은 두 번째 구문이 지역 변수 대신 전역 변수 범위에서 평가된다는 것입니다. JS 해석기는 내부적으로 생성자 함수를 사용하지 않습니다. –

+1

시스템 감사합니다. 관련 문서를 다시 읽음으로써이를 명확히했습니다. 내 대답을 편집했습니다. – marekful

관련 문제