JavaScript 함수의 프로토 타입 체인에서 함수가 어디에 있습니까?JavaScript 함수 프로토 타입 : Object, Function 또는 Both?
작업 예 :
이> var f = function() { alert(1); }
f()
에 호출이 제대로 다음과 같은 콘솔 문을 기능 검사시 숫자 1의 경고 결과 :
> console.dir(f)
프로토 타입이 키/값 쌍인 prototype: Object
의 형식으로 Object로 나열되는 방법에 유의하십시오. 즉, f
이 Object에서 직접 상속 받음을 의미합니다. 충분히 공정하다. JavaScript의 배열 및 기타 엔터티는 Object에서 상속받습니다.
다음 관찰 결과 충돌이 발생합니다. 다음 명령을 입력하십시오.
f instanceof Function
결과는 true
입니다.
내가 이해하는대로 사용자가 만든 함수는 Function 개체에서 상속되며 Object 개체에서 상속됩니다. 그러나 나에게있어서 f를위한 프로토 타입 체인을 검사하여 찾을 수는 없다.
여기서 함수 f의 프로토 타입 체인에 Function
이 있습니까?
tyvm
다이어그램 정확히 내가 자바 스크립트 상속을 이해하는 방법입니다거야 ... 그러나 콘솔 로그 명령문은 그에 대응하지 않습니다! 1. Function.prototype이 'f'함수의 '아래'에 나열되지 않습니다. 2. Object.getPrototypeOf (f)는'function Empty() {}'를 생성합니다. 오. 오? 이것이 퍼즐에 어디에 들어 맞습니까? 3. 공개 및 내부 프로토 타입 속성에 대한 추가 정보를 얻을 수있는 링크를 권장한다면 매우 유용 할 것입니다. – kmiklas
또한, (Empty() {}). isPrototypeOf (f) 함수를 사용하면 프로토 타입이 첫 번째라고 말한 것입니다. – Mike
@kmiklas : 1. 어떤 브라우저 (어떤 콘솔)를 사용하고 있는지 알 수 없습니다. 'console.dir'는 적어도 자신의 속성을 보여줍니다 ('.prototype'), 아마도 프로토 타입 체인 객체를 확장 목록에 포함 할 수 있습니다. 그렇지 않다면 대신'console.log (f)'를 시도하십시오. 2. 예, Object.getPrototypeOf (f) === Function.prototype'은'function Empty() {}'로 표시됩니다. 붙여 넣을 때 다른 함수를 만들고 있음을 알 수 있습니다. 'Function.prototype.isPrototypeOf (f)'를 시도하십시오 : – Bergi