2011-10-16 5 views
2

Javascript에서 오브젝트를 상속하는 다음 두 가지 메소드 간에는 어떤 차이가 있습니까?자바 스크립트에서 오브젝트를 상속하는 두 가지 다른 (?) 메소드

function Person(name) { 
    this.name = name; 
} 
function Student(name, id) { 
    Person.call(this, name); 
    this.id = id; 
} 

방법 1 :

Student.prototype.__proto__ = Person.prototype; 

방법 2 : 특정 패턴에 의해 객체의 생성 외에

Student.prototype = new Person; 
Student.prototype.constructor = Student; 
+1

'constructor' 속성을 설정하는 것이 어떤 용도로든 생각하지 않습니다. – user123444555621

답변

1

는 생성자 함수 다른 유용한 것은, 자동 설정 않는다 새롭게 생성 된 객체의 프로토 타입 객체. 이 프로토 타입 개체는 ConstructorFunction.prototype 속성에 저장됩니다.

꽤 많은 "내부"인 .__proto__ 속성을 특정 개체에 설정하면 명시 적으로 그렇게 할 수 있습니다. 그것은 어쨌든 모든 자바 스크립트 구현에서 가능하지 않습니다. 하지만 기본적으로는 거의 같습니다. 프로토 타입이 개체에 대해 특별히 설정되지 않은 경우 기본 개체가 사용됩니다 (Object.prototype).

관련 문제