>웹 프론트엔드 >JS 튜토리얼 >JS 보조함수 상속()에 관한 질문_기본지식

JS 보조함수 상속()에 관한 질문_기본지식

WBOY
WBOY원래의
2016-05-16 17:38:191049검색

최근 "JavaScript에 대한 확실한 가이드(6판)"를 읽었는데 6장 P122에 다음 코드가 있습니다.

코드 복사 코드는 다음과 같습니다.

// 프로토타입에서 상속된 속성을 반환합니다. object proto 새 객체
//여기에서 ES5 Object.create() 함수를 사용할 수 있습니다
function 상속(proto) {
//proto는 객체이지만 null일 수 없습니다
if( proto == null) throw TypeError();
if(Object.create) return Object.create(proto); //Object.create()가 있으면 사용
var t = typeof proto; 그렇지 않은 경우 추가 확인
if(t!=='object' && t!=='function') throw TypeError();
var F = function() {} // 빈 생성자 정의
F.prototype = proto; // 프로토타입 속성을 proto로 설정
return new F(); // F()를 사용하여 proto의 상속된 객체 생성

도우미 함수의 목적은 분명히 상위 클래스의 프로토타입을 상속하는 새 객체를 생성하는 것입니다

질문

다음 판단은 지금으로서는 이해가 되지 않습니다

코드 복사 코드는 다음과 같습니다.
var t = typeof proto; 자세히 확인
if(t!=='object' && t!=='function') throw TypeError();

우리 생각에 프로토타입 객체는 객체이거나 직접적인 리터럴이어야 하므로 전달된 매개변수 유형은 "함수" 유형을 갖습니다

이해

함수도 객체이며 고유한 속성과 메서드를 가질 수도 있습니다. 잠깐, 이것은 우리의 정적 속성과 메서드가 아닙니다! 이는 함수를 속성을 추가할 수 있는 객체로 취급하는 것을 의미합니다

코드 복사 코드는 다음과 같습니다.
// 테스트 통과 함수 유형
var func = function() {};
func.text = '잘했어요';
func.getText = function() {
return func.text;
};
콘솔. log(typeof func); // 'function'
// 함수 유형을 전달하고 func로 프로토타입된 새 객체를 반환합니다.
var subFunc = 상속(func)
console.log(subFunc.getText( )); // 출력: '수고했어요'

알겠습니다. 증거입니다. '함수' 유형을 전달할 수 있는 것으로 나타났습니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.