私はJavaScriptでオブジェクト階層を作成していますが、そのオブジェクトのメソッドをシャドウしたときにオブジェクトの親に対してメソッドを呼びたいと思います。シンプルな/より良い方法は、シャドープロトタイプメソッドを呼び出すには?
例えば:
var Base = function Base(msg) {
this.msg = msg;
}
Base.prototype.log = function(){
console.log("base log: " + this.msg);
}
var Sub = function Sub(msg) {
Base.call(this, msg);
}
Sub.prototype = Object.create(Base.prototype);
Sub.prototype.log = function() {
console.log("sub log");
this.__proto__.__proto__.log.call(this); // This works but __proto__
Object.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this); // This works but is verbose
super.log(); // This doesn't work
}
var sub = new Sub('hi');
sub.log();
はSub.prototype.log
機能の下部に3行を参照してください - 私はそこに何をしようとしている行うには良い方法はありますか?
2番目の行は私が思いついた最高ですが、非常に冗長です!
私はこれがhttp://codereview.stackexchange.comに属していると感じているので、この質問をオフトピックとして閉じるよう投票しています。 – Dom
おそらく、私はレビューを求めているとは思わない、私は言語の仕組みやパターンがあるかどうか疑問に思っています。私は何をしようとしているのか、どちらが適しているのか分かりません。 stackoverflowがそれのための適切な場所でない場合、訂正されてうれしいです。 – sync
質問にはnode.jsというタグが付いているので、es6クラスを使用することもできます。 – hassansin