オブジェクトのメソッドをオーバーライドしようとしていますが、 を使用してプロトタイプの元のメソッドを呼び出します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
。これは、そのメソッドが同じことを行うときに問題を引き起こします。
私はこれについて間違った方法で進んでいますか?正しいプロトタイプがプルアップされていることを確認するためのヘルパー関数を作成する方法はありますか? 私は少し途方に暮れています。