[解決済み] JavaScriptオーバーライドメソッド
2023-01-29 17:17:29
質問
以下のようなコードがあるとします。
function A() {
function modify() {
x = 300;
y = 400;
}
var c = new C();
}
function B() {
function modify(){
x = 3000;
y = 4000;
}
var c = new C();
}
C = function () {
var x = 10;
var y = 20;
function modify() {
x = 30;
y = 40;
};
modify();
alert("The sum is: " + (x+y));
}
さて、問題は、このメソッドをオーバーライドして
modify
から
C
の中にあるメソッドで
A
と
B
. Javaでは
super
-というキーワードを使いますが、JavaScriptでこのようなことを実現するにはどうしたらよいでしょうか?
どのように解決するのですか?
編集:最初の回答が書かれてからもう6年になりますが、多くのことが変わりましたね。
- 新しいバージョンの JavaScript を使用している場合、おそらく次のようなツールでコンパイルされたものです。 バベル のようなツールでコンパイルされている場合は 実際のクラスを使用する .
- で提供されるクラスのようなコンポーネントコンストラクタを使用している場合、そのクラスは Angular または リアクト を使用する場合は、そのフレームワークのドキュメントを参照する必要があります。
- ES5を使用していて、プロトタイプを使用して手作業でquot;fake"クラスを作成している場合、以下の回答はこれまでと同様に正しいものです。
幸運を祈ります。
JavaScriptの継承は、Javaとは少し異なっています。以下は、JavaScriptのネイティブなオブジェクトシステムの様子です。
// Create a class
function Vehicle(color){
this.color = color;
}
// Add an instance method
Vehicle.prototype.go = function(){
return "Underway in " + this.color;
}
// Add a second class
function Car(color){
this.color = color;
}
// And declare it is a subclass of the first
Car.prototype = new Vehicle();
// Override the instance method
Car.prototype.go = function(){
return Vehicle.prototype.go.call(this) + " car"
}
// Create some instances and see the overridden behavior.
var v = new Vehicle("blue");
v.go() // "Underway in blue"
var c = new Car("red");
c.go() // "Underway in red car"
残念ながら、これは少し醜く、"super" への非常に良い方法を含んでいません: あなたは、呼び出したい親クラスのメソッドを手動で指定する必要があります。そのため、クラスをよりきれいに作成するためのさまざまなツールがあります。Prototype.js、Backbone.js、またはjsでOOPを行うためのより良い構文を含む同様のライブラリを見てみてください。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] ECMAScriptとは?
-
[解決済み] 変異を伴わないオブジェクトからの値の削除
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]
-
[解決済み] 変異を伴わないオブジェクトからの値の削除