당신은 실제로이 질문 또한 in my answer to previous question에 대한 답을 찾을 수 있으며 다른 언어에서 상속과 유사하다.
클래스를 확장하는 경우 자식 클래스의 생성자 함수는 부모 클래스에 대한 고유 한 인수 및을 받아 들여야합니다. 그래서 당신이 가정 :
function Parent(a) {
this.foo = a;
};
// and
function Child(b, a) {
Parent.call(this, a); // executes the parent constructor for this instance
this.bar = b;
alert(this.foo);
};
inherits(Parent, Child);
이 (inherits
의 구현이 this answer에서 찾을 수 있습니다).
Child
내부에있는 부모 클래스의 construtor를 호출하고 매개 변수를 전달해야합니다 (Java 또는 Python에서와 유사). myChild.prototype = new myClass();
가 대부분으로 좋은 상속 패턴이 아닌,
function Parent(a, b, c, d) {...};
function Child(e, f) {
// c and d are parameters for `Child`
// arguments[0] == e
// arguments[1] == f
// all other arguments are passed to Parent, the following
// creates a sub array arguments[2..n]
Parent.apply(this, [].slice.call(arguments, 2);
/...
}
// later
var child = new Child(e, f, a, b, c, d);
일반적으로
: 당신은 많은 매개 변수가있는 경우
, 당신은 좀 더 쉽게 일을하려면 arguments
객체를 사용할 수있다 시간, 클래스는 몇 가지 인수를 기대하고있다. 각 인스턴스에 대해 상위 생성자를 실행하지 않고 모든 인스턴스에 대해 한 번만 실행합니다.
첫 번째 스 니펫에는'()'이 누락되어 있으며'bar' 문자열이 필요하면이를 인용해야합니다. – pimvdb
수정하여 오타 수정 – user1209203
''bar ''를 전달할 곳이 확실하지 않습니다. 어떤 기능을 받아 들여 그것을 설정해야합니까? 자식 클래스가 설정해야하지만 자식 클래스에 전달하고 싶지는 않습니다. 자세히 설명해 주시겠습니까? – pimvdb