2014-04-01 2 views
-1

저는 최근에 JS를 사용하여 편안 영역을 벗어 났으며 일반적인 기능을 공유하는 것이 타당한 상황을 경험했습니다. 내가 가지고 올 한 것은 다음과 같은 (개념 만) 코드 :JS "상속"(코드 공유) 메커니즘

내가 (하지만 그 반대의 경우도 마찬가지, HttpURL에 URL에 "방법"사용할 수 있도록)가 작동 예상대로이 코드는 작동
function subclass(parent, child) { 
    child.prototype = Object.create(parent.prototype) 
} 

function URL(str) { 
    this.value = str; 
} 

function HttpURL(str) { 
    this.value = str 
} 

subclass(URL, HttpURL) 

URL.path = function() { 
    return this.value; 
} 
// ... 

HttpURL.isSecure = function() { 
    this.value.substring(0, 8) === 'https://'; 
} 

, 그러나 그것이 "윤리적 인"것인지 아니면 이것을 허용하는 더 좋은 방법이 있는지 궁금합니다.

+0

그리고 뭐가 문제입니까? 두 객체가 동일한 코드를 공유하는 것이 윤리적입니까?) – raina77ow

+1

이것은 정확하게 자바 스크립트에서 상속 체계를 얼마나 쉽게 관리 할 수 ​​있는지입니다. 명성! 'Object.create'를 지원하지 않는 구형 환경에서 작업한다면, 할 일이 조금 더 필요 하겠지요.하지만 이것은 올바른 생각입니다. –

답변

0

일반적인 기능을 공유하는 것이 바람직한 상황. 작동하고 correct 솔루션입니다

subclass(URL, HttpURL) 

예.

URL.path = function() { 
    return this.value; 
} 
HttpURL.isSecure = function() { 
    this.value.substring(0, 8) === 'https://'; 
} 
이 코드는 내가이 일을 예상대로 작동

당신은 URL 방법을 만들고 싶어 (HttpURL에 가능한 URL 의 "방법"을하고 있지만 그 반대의 경우도 마찬가지)

번호 그렇지 않으면

URL.prototype.path = function() { 
    return this.value; 
} 
HttpURL.prototype.isSecure = function() { 
    this.value.substring(0, 8) === 'https://'; 
} 

그들이 우와 : 당신이 프로토 타입을 사용해야하는 HttpUrl 볼 수 인스턴스, 상속되지 않습니다.