2012-10-14 6 views
3

Stoyan Stefanov의 "Object Oriented Javascript"라는 책을 읽었습니다. 이 문장은 다음과 같습니다.함수 및 개체 자바 스크립트

실제로 함수는 'Capital'생성자 함수 (대문자 F)로 작성된 객체입니다.

저자는 몇 가지 좋은 예를 들어 이것을 보여줍니다. 그러나, 그 성명을 기반으로, 나는 혼자 대답 할 수없는이 질문을 얻었다. '기능'생성자는 기능,는 객체 그래서 '기능'기능이므로 다음 '기능'객체는를 구축하기 위해 다른 생성자 함수를 필요로하고 있기 때문에 다른 생성자 함수는 개체 (다시 것을 a 기능).

글쎄,이 끝없는 논리로 끝납니다. 누군가 내 사고에서 잘못된 점을 지적하도록 도울 수 있습니까?

  1. 엔티티
  2. 기능성 기능 엔티티는 기능성을 포함 "캡슐", 즉 일종의는

전원 :

+7

'Function.constructor === Function' -하지만 원시 객체는 스크립팅이 아닌 환경을 통해 제공되므로 이것이 가능합니다. – pimvdb

답변

3

'기능'기능은 객체 인 다음 '기능'객체가 그것에게

번호 Function를 구축하기 위해 다른 생성자 함수를 필요로하는 것은 누구의 특성과 행동 section 15.3 of the EcmaScript specification에 정의 된 기본, 내장 객체이다. js 함수로 빌드되지 않았습니다.

EcmaScript 환경의 코드 어딘가에 함수 객체를 만드는 함수가 있습니다. 함수가 함수 표현식이나 선언을 만날 때마다 호출됩니다. 전역 Function 함수는 스크립트에서 스크립트에 액세스 할 수 있도록하는 함수의 래퍼입니다.해당 함수가 반환하는 모든 함수 객체는 Function.prototype 객체에서 상속받습니다. 즉, Function으로 생성 된 것처럼 보입니다. 또한 Function.prototype.constructor 속성은 모든 함수가 Function을 가리 키도록 is defined을 상속받습니다.

0

JS에서 함수는 2 개 개념을 내장 여러 입력을 하나의 출력으로 변환하는 것. 이 캡슐은 우리가 "대상"으로 알고있는 것입니다. 이 재귀가 끝나면 언어의 내포 된 기능의 한계를 설정하는 ID Function.constructor === Function을 찾습니다. JS 기능의 나머지 부분은 캡슐 또는 객체를 포함하는 객체가 없기 때문에 언어 자체로 액세스 할 수 없습니다.

JS에서는 독립 실행 형 '기능'을 정의 할 수 없지만 다른 개체로 취급 될 수있는 기능을 구현하는 개체를 만듭니다. Function 개체는 기능 제한을 구현하기위한 핵심 개체입니다. (function 키워드로) 명명 된 또는 익명의 함수를 정의하면 이름 (명명 된 함수) 또는 변수 (이름없는 함수)에 직접 바인딩되는 Function 개체가 생성됩니다. Array 객체는 배열 요소에 접근하는 데 사용되는 [] 연산자를 가지고 마찬가지로

function foo(a, b) { return a+b; } //This function is a Function object bound to the name `foo` 

var a = function(a, b) { return a+b; } //the Function object is bound to `a` 

하면 임베디드 기능을 호출하기 위해 사용되는 함수 객체의 운영자로 () 해석 할 수있다.