2017-12-17 1 views
1

프로토 타입 상속에 대해 머리를 감싸려고합니다. MDN 문서를 읽었지만 훨씬 더 똑똑하지는 않습니다. 지금까지 다음 코드를 가지고 있습니다 ...Javascript Inheritance Woes

var Vertex = function(id, options){ 
    this.options = options || {}; 
    this.id = id; 

    this.position = new THREE.Vector3(0, 0, 0); 
    this.velocity = new THREE.Vector3(0, 0, 0); 
    this.acceleration = new THREE.Vector3(0, 0, 0); 

    this.toString = function(){ 
    return this.id.toString(); 
    }; 

    this.edge_count = 0; 
    this.edges = {}; 

    if(!this.options.hasOwnProperty('label')){ 
    this.options.label = { 
     text: '', 
     direction: 'x', 
     distance: '10' 
    }; 
    }; 
}; 

... 생성자가 추가 한 모든 속성을 "상속"하고자합니다. Vertex에는 메쉬를 정점의 object으로 추가하는 페인트 방법이 있습니다. 그래서 나는 내가 단순히 정점의 개체 속성에 카메라를 할당 생성자, 것을 제외하고 (정점 교체 하락으로 CameraVertex을 사용할 수있을 거라고 ... ...

var CameraVertex = function(id, camera){ 
    Vertex.call(this); 
    this.object = camera; 
    this.id = id; 
}; 
CameraVertex.prototype = Object.create(Vertex.prototype); 
CameraVertex.prototype.constructor = CameraVertex; 

을 썼다 일반적으로.

를 메쉬 또는 그룹 보유하지만 어떤 이유로, 나는 CameraVertex하고 정기적 정점 사이의 가장자리를 만들 때 더 source.object 없을 것 같습니다.

완전한 예를 클릭 한 후 Social Cartography에서 찾을 수 있습니다 google로 로그인하고 마우스로 정점을 선택하십시오.

+0

'CameraVertex'는'Vertex' 생성자에 의해 정의 된 모든 속성을 "상속받습니다". 그래서이 라인은 의도적으로 존재합니다. 결국 저는 결과물 인 CameraVertex를'object' 속성과'position'뿐만 아니라'velocity'와'acceleration'로 완성 된 다른 Vertex와 똑같이 취급하고 싶습니다. –

+0

프로토 타입 상속 _by definition_은 생성자에 추가 된 속성을 상속하는 데 사용할 수 없습니다. 이러한 속성은 _instance 속성 _이며 프로토 타입의 일부가 아니기 때문입니다. – Alnitak

+0

BaseClass.call (this)을 호출하면 그 효과 만 얻을 수 있습니다. –

답변

1

상속 된 Object의 생성자를 호출 할 때 필요한 모든 매개 변수도 전달해야합니다. 세 그래서 난 지금까지 내가이 문제를 볼 수 source.object과 문제를 이해하지 않습니다와 나는 익숙하지 않다하더라도

var CameraVertex = function(id, camera, options){ 
    Vertex.call(this, id, options); 
    this.object = camera; 
    this.id = id; 
}; 

.

+1

'Vertex'에는 기본 매개 변수가 있으므로 문제가되지 않아야합니다. 맞습니까? 이 함수는'Vertex (id, options)'를'= undefined '옵션으로 호출 할 것이고, 그 시점에서 두번째 라인이 시작될 것입니다.하지만 당신 말이 맞습니다. 그것은 3 가지가 아닙니다. 특정 문제, Javascript 문제에 관한 것입니다. –

+0

@JoshuaMoore 게시 한 Vertex 객체에서 옵션은 선택 사항이지만 ID는 아닙니다. – Burimi

+0

@JoshuaMoore 이것은 길다.하지만 일단이 책을 다 읽으면 JS의 상속으로 머리를 감쌌다. https://github.com/getify/You-Dont-Know-JS/blob/master/this% 20 & % 20object % 20prototypes/README.md # 당신은 알지 못합니다.이 - 객체 - 프로토 타입 – Burimi