1. ホーム
  2. javascript

スーパーインバックボーン

2023-10-04 18:49:17

質問

をオーバーライドすると clone() メソッドをオーバーライドすると Backbone.Model このオーバーライドされたメソッドを私のインプラントから呼び出す方法はありますか?このようなものです。

var MyModel = Backbone.Model.extend({
    clone: function(){
        super.clone();//calling the original clone method
    }
})

どのように解決するのですか?

を使いたくなりますね。

Backbone.Model.prototype.clone.call(this);

これは、元の clone() メソッドを Backbone.Model のコンテキストで this (現在のモデル)のコンテキストを持つ。

から バックボーンのドキュメント :

superについて余談ですが、JavaScriptはプロトタイプの上位で定義された同名の関数であるsuperを呼び出す簡単な方法を提供しません。 super - プロトタイプチェーンの上位で定義された同名の関数を呼び出す簡単な方法を提供していません。 を呼び出す簡単な方法を提供していません。set や save のようなコア関数をオーバーライドして、親オブジェクトの実装を呼び出したい場合、super を呼び出す簡単な方法はありません。 親オブジェクトの実装を呼び出したい場合、明示的に呼び出す必要があります。 明示的に呼び出す必要があります。

var Note = Backbone.Model.extend({
 set: function(attributes, options) {
 Backbone.Model.prototype.set.apply(this, arguments);
 ...
 }    
});