개체의 메서드를 재정의하려고하지만 여전히 Object.getPrototypeOf()
을 사용하여 프로토 타입의 원래 메서드를 호출하려고합니다. 이 기능은 처음에는 훌륭하지만, 메서드가 두 번 이상 재정의되는 경우 문제가 발생합니다. 스택 오버 플로우에서다음 프로토 타입의 재정의 된 메서드 오류를 호출하는 호출 프로토 타입의 재정의 된 메서드
이 코드 결과 :
A =
{
blurg: function()
{
puts('hey there')
}
}
B = (function buildB(){
var obj = Object.create(A)
obj.blurg = function()
{
Object.getPrototypeOf(this).blurg.apply(this, arguments)
puts('hai!!!!')
}
return obj
})()
b = (function buildb(){
var obj = Object.create(B)
obj.blurg = function()
{
Object.getPrototypeOf(this).blurg.apply(this, arguments)
puts('bye bye')
}
return obj
})()
b.blurg()
문제는 내가 this
로 현재 객체와 프로토 타입의 메소드를 호출 할 것입니다. 이 메서드는 같은 일을 할 때 문제가 발생합니다.
내가 잘못 생각하고 있습니까? 올바른 프로토 타입을 가져 오도록 도우미 함수를 만들 수있는 방법이 있습니까? 나는 약간의 손실이있다.
관련 : http://stackoverflow.com
것은이 문제를 해결하려면, 슈퍼 클래스 메소드를 호출 할 때
this
를 사용하지 않는 새로운 하위 클래스를 정의 할 때마다 기본 클래스 참조를 저장하려고/questions/6827989/code-re-use-javascript-prototypal-inheritance – donut