왜 Child.prototype = Parent.Prototype이 Javascript 상속을 중단할 수 있습니까?
Javascript 상속에서 다음과 같은 상속 패턴을 접했을 수 있습니다. :
function GameObject(oImg, x, y) { // GameObject constructor } Spaceship.prototype = new GameObject(); Spaceship.prototype.constructor = Spaceship;
그러나 상속 후 Spaceship.prototype에 속성을 추가할 때 예기치 않은 동작을 발견했을 수 있습니다. Spaceship의 프로토타입 속성은 GameObject가 아닌 Spaceship으로 설정됩니다.
이는 Spaceship.prototype = GameObject.prototype을 설정하면 두 프로토타입이 동일한 객체를 참조하기 시작하기 때문에 발생합니다. 한 개체를 수정하면 다른 개체에도 영향을 미칩니다. 따라서 Spaceship.prototype에 속성을 추가하면 GameObject.prototype에도 추가됩니다.
이 문제를 방지하려면 다음을 사용할 수 있습니다.
Spaceship.prototype = Object.create(GameObject.prototype);
이렇게 하면 GameObject.prototype을 사용하여 새 개체가 생성됩니다. Spaceship.prototype에 대한 수정 사항이 GameObject.prototype에 영향을 미치지 않도록 프로토타입으로 사용합니다.
또는 생성자를 호출하려면 대신 Spaceship 생성자 내에서 GameObject.apply(this, 인수)를 사용합니다. 위 줄입니다.
위 내용은 왜 `Child.prototype = Parent.prototype`이 JavaScript 상속을 중단합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!