我試圖重寫對象的方法,但仍使用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/questions/6827989/code-re-use-through-javascript-prototypal-inheritance – donut