Douglas Crockford의 객체 기능에 대해 혼란 스러움

hh54188

나는 Crockford가 JavaScript에서 상속을위한 유명한 객체 함수를 가지고 있다는 것을 알고 있습니다.

function object(o) {
    function F() {}
    F.prototype = o;
    return new F();
}

그러나 나는 혼란 스럽습니다. 줄 뒤에 F.prototype = o왜 그가 F.prototype다음과 같이의 생성자 를 재설정하지 않습니까?

F.prototype.constructor = F

그것은 일반적인 관행이 아닙니까?

Bergi

그것은 일반적인 관행이 아닙니까?

서브 클래스 (다른 프로토 타입에서 상속 된 프로토 타입이있는 생성자 함수)를 생성 할 때만 가능합니다.

그러나 그것은이 코드의 목적이 아닙니다 Object.create. 그것은 다른 객체로부터 상속받는 객체를 만드는 부분을 차지합니다. F생성자 함수는 중간이 아닌 노출 될 예정이다.

F.prototype = o;

왜 그가하지 않는 F.prototype.constructor = F거야?

o그 자체 가 바뀔 것이기 때문입니다 . 목표는 새 개체를 만드는 것입니다. 생성자 자체가 아니라 중간 생성자 인스턴스반환 합니다.


어디에서 constructor설정 됩니까 ( 필요한 경우 )? 의해 인스턴스화되는 개체에서 object:

 function inherit(chd, par) {
     chd.prototype = object(par.prototype);
     chd.prototype.constructor = chd;
 }

 function Foo() {}
 function Bar() {}
 inherit(Foo, Bar);

 /* Because of overwriting `constructor`: */
 Foo.prototype.constructor === Foo
 (new Foo).constructor === Foo

 /* Because of the prototype chain: */
 new Foo instanceof Bar // true, because
 Foo.prototype instanceof Bar // true

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

concat ()의 동작과 반환하는 객체에 대해 혼란 스러움

분류에서Dev

맵 축소에서 축소 기능의 동작에 대해 혼란 스러움

분류에서Dev

코드의 큰 O 표기법에 대해 혼란 스러움

분류에서Dev

Python (2.4.3)에서 set ()의 출력에 대해 혼란 스러움

분류에서Dev

R의 2 차원 요소에 대해 혼란 스러움

분류에서Dev

파이썬의 size () 함수에 대해 혼란 스러움

분류에서Dev

함수 shutdown (fd, options)의 동작에 대해 혼란 스러움

분류에서Dev

우분투 (Linux)의 보안에 대해 혼란 스러움

분류에서Dev

zookeeper의 트랜잭션 로그에 대해 혼란 스러움

분류에서Dev

Django의 ForeignKey 모델 관계에 대해 혼란 스러움

분류에서Dev

Android의 햅틱 피드백에 대해 혼란 스러움

분류에서Dev

VMWare의 다른 제품에 대해 혼란 스러움

분류에서Dev

Idris의 중간 유형에 대해 혼란 스러움

분류에서Dev

Idris의 중간 유형에 대해 혼란 스러움

분류에서Dev

Bash의 변수 범위에 대해 혼란 스러움

분류에서Dev

PHP (5.5.38)의 간단한 전환에 대해 혼란 스러움

분류에서Dev

nodeJS에 대해 혼란 스러움

분류에서Dev

가치에 대해 혼란 스러움

분류에서Dev

DropDownListFor에 대해 혼란 스러움

분류에서Dev

ContentType에 대해 혼란 스러움

분류에서Dev

WindowBuilder에 대해 혼란 스러움

분류에서Dev

EKEventStatus에 대해 혼란 스러움

분류에서Dev

코 루틴과 관련하여 Kotlin의 일시 중지 기능에 대해 혼란 스러움

분류에서Dev

Amazon Web Services에서의 호스팅에 대해 혼란 스러움

분류에서Dev

앱 호환성 v21의 TextAppearance 스타일에 대해 혼란 스러움

분류에서Dev

계획에 정의 된 단점에 대해 약간 혼란 스러움

분류에서Dev

Python에서 time.clock의 동작에 대해 혼란 스러움

분류에서Dev

6502 간접 x 및 y의 래핑에 대해 혼란 스러움

분류에서Dev

ES6-Promise의 처리 순서에 대해 혼란 스러움

Related 관련 기사

  1. 1

    concat ()의 동작과 반환하는 객체에 대해 혼란 스러움

  2. 2

    맵 축소에서 축소 기능의 동작에 대해 혼란 스러움

  3. 3

    코드의 큰 O 표기법에 대해 혼란 스러움

  4. 4

    Python (2.4.3)에서 set ()의 출력에 대해 혼란 스러움

  5. 5

    R의 2 차원 요소에 대해 혼란 스러움

  6. 6

    파이썬의 size () 함수에 대해 혼란 스러움

  7. 7

    함수 shutdown (fd, options)의 동작에 대해 혼란 스러움

  8. 8

    우분투 (Linux)의 보안에 대해 혼란 스러움

  9. 9

    zookeeper의 트랜잭션 로그에 대해 혼란 스러움

  10. 10

    Django의 ForeignKey 모델 관계에 대해 혼란 스러움

  11. 11

    Android의 햅틱 피드백에 대해 혼란 스러움

  12. 12

    VMWare의 다른 제품에 대해 혼란 스러움

  13. 13

    Idris의 중간 유형에 대해 혼란 스러움

  14. 14

    Idris의 중간 유형에 대해 혼란 스러움

  15. 15

    Bash의 변수 범위에 대해 혼란 스러움

  16. 16

    PHP (5.5.38)의 간단한 전환에 대해 혼란 스러움

  17. 17

    nodeJS에 대해 혼란 스러움

  18. 18

    가치에 대해 혼란 스러움

  19. 19

    DropDownListFor에 대해 혼란 스러움

  20. 20

    ContentType에 대해 혼란 스러움

  21. 21

    WindowBuilder에 대해 혼란 스러움

  22. 22

    EKEventStatus에 대해 혼란 스러움

  23. 23

    코 루틴과 관련하여 Kotlin의 일시 중지 기능에 대해 혼란 스러움

  24. 24

    Amazon Web Services에서의 호스팅에 대해 혼란 스러움

  25. 25

    앱 호환성 v21의 TextAppearance 스타일에 대해 혼란 스러움

  26. 26

    계획에 정의 된 단점에 대해 약간 혼란 스러움

  27. 27

    Python에서 time.clock의 동작에 대해 혼란 스러움

  28. 28

    6502 간접 x 및 y의 래핑에 대해 혼란 스러움

  29. 29

    ES6-Promise의 처리 순서에 대해 혼란 스러움

뜨겁다태그

보관