問題タブ [prototypal-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
20689 参照

javascript - Extjs:コンストラクターまたはinitComponentを介してクラスを拡張しますか?

extjs では、 を介していつでも extjs クラスを拡張できますconstructor()。から派生するクラスについては、Componentを介して拡張することもできますinitComponent()

普遍的な拡張方法のように見えるのにinitComponent、なぜ多くのコードが を介して拡張されるのか疑問に思っています。よりも明確な利点がありますかconstructor?initComponentconstructor

0 投票する
3 に答える
207 参照

javascript - JavaScript で [] 演算子を使用して Array から継承されたオブジェクトにアクセスするにはどうすればよいですか?

Array から継承された新しい JavaScript オブジェクトを作成する必要がある状況があります。次のコードを使用しています。

非常に興味深いことに、 [] 操作は役に立たないようで、コンソール出力は次のようになります。

ここで何が欠けていますか?

0 投票する
2 に答える
265 参照

javascript - イベント ハンドラーとして使用される Javascript プロトタイプ関数内の「this」の値

Javascript でプロトタイプの継承を使用しようとしています。以下の私のコードの問題は、ボタンがクリックされMyNamespace.MyObj.myEventHandlerて呼び出されたときに、 の値がthisのインスタンスでMyNamespace.MyObjはなく、クリックされたボタンであることです。

私は物事を間違って構造化していますか (より良い方法はありますか)? this呼び出し元のボタンではなく、オブジェクトのインスタンスであることをどうにかして確認できますか?

これは、私がプロトタイプの継承を学ぶために使用している非常に単純な例です。上記のコードの実際の機能は jQuery で簡単に実行できること、またはオブジェクト リテラルまたはモジュール パターンを使用できることを認識していますが、現時点では特定の機能を実装するのではなく、プロトタイプの継承を学ぶことに本当に興味があります。 .

0 投票する
1 に答える
663 参照

javascript - EXTENDS の課題: プリプロセッサ関数マクロとクラスのような oop

バックグラウンド

私は C プリプロセッサを使用して、複数のファイルとビルド ターゲットを含むセミ大規模な JavaScript プロジェクトを管理および「コンパイル」しています。これにより、javascript 内から 、 、 など#include#defineCプリプロセッサ ディレクティブに完全にアクセスできます。#ifdefサンプル コードをテストできるように、サンプル ビルド スクリプトを次に示します。

srcbuildディレクトリを作成し、.js ファイルを に配置しますsrc


便利なマクロ

もともと、私はプリプロセッサが#include#ifdef秒間必要だったのですが、便利なマクロもいくつかあるといいのではないかと考えました。実験が続いた。

かっこいいので、次のように書くことができます。

そして、次のように展開されます。

foreach はどうですか?

このマクロの呼び出しに続く中括弧を邪魔しないようにv=o[k]、条件の中に忍び込む方法に注目してください。if


クラスライクな OOP

NAMESPACE マクロと、あいまいだが便利な js パターンから始めましょう...

new function(){ ... }いくつかのきちんとしたことをします。()匿名関数をコンストラクターとして呼び出すため、それを呼び出すために最後に余分なものは必要なく、thisその中でコンストラクターによって作成されるオブジェクト、つまり名前空間自体を参照します。これにより、名前空間内に名前空間をネストすることもできます。

クラスのような OOP マクロの完全なセットを次に示します。

ご覧のとおり、これらのマクロはVariable Object(便宜上) とthis(必要に応じて) の両方で多くのことを定義します。コード例を次に示します。


エクステンドはどうですか?

これは私に質問をもたらします... EXTENDS をマクロとして実装して、通常の「プロトタイプのクローンを作成し、コンストラクターのプロパティをコピーする」js プロトタイプの継承をラップするにはどうすればよいでしょうか? ばかげているクラス定義のに EXTENDS を表示することを要求する以外に、それを行う方法を見つけられませんでした。この実験には EXTENDS が必要です。そうしないと役に立ちません。同じ結果が得られる限り、他のマクロを自由に変更してください。

編集 - これらは EXTENDS に役立つ場合があります。完全を期すためにここにリストします。

ヘルプ、アドバイス、または活発な議論をよろしくお願いします。:)

0 投票する
3 に答える
2354 参照

javascript - Crockford のプロトタイプ継承方法を使用した大規模な JavaScript プロジェクトの例はどこにありますか?

私は Crockford がJavaScript をより明らかに原型的な方法で使用することを推し進めていることを読んだことがあります(「新しい」キーワードを使用せずに、オブジェクトを複製して新しいオブジェクトを作成します)。しかし実際には、このスタイルを大規模なプロジェクトに使用している人を見たことがありません。

このスタイルを使用する大規模なプロジェクトの例はどこにありますか?

0 投票する
2 に答える
838 参照

powershell - Powershellのプロトタイプの継承?

PowershellでPSObjectのプロトタイプの継承を実装するライブラリまたはプロジェクトはありますか?

0 投票する
2 に答える
944 参照

actionscript-3 - Actionscript-3プロトタイプの継承


基本的に、Objectクラスのコンストラクターを変更したいと思います。
すべてのクラスがObjectを拡張するので、任意のクラスの任意のオブジェクトがインスタンス化されるたびに、変更された関数が
呼び出されること を願っています。

だから私はこれをしました:

トレースステートメントにブレークポイントを設定します。

しかし、それだけではありません。
トレースステートメントも実行されませんでした。

解決策/提案はありますか?

0 投票する
3 に答える
6017 参照

javascript - ES5のObject.defineProperty?

列挙を構成可能にする「新しい」Object.create に関する投稿を見ています。ただし、これは Object.defineProperty メソッドに依存しています。このメソッドのクロス ブラウザー実装が見つかりません。

古い Object.create の作成に行き詰っていませんか? IE6/7で動かないものは書けません。

0 投票する
3 に答える
342 参照

javascript - Javascript:プロトタイプの継承とスーパーコンストラクター

継承オブジェクトからスーパーコンストラクターを呼び出すにはどうすればよいですか?たとえば、私は単純な動物の「クラス」を持っています:

Animalを継承するが、レッグの数を乱数に設定する「Chimera」クラスを作成したい(コンストラクターでレッグの最大数を提供します。これまでのところ、これがあります。

動物のコンストラクターを呼び出す方法は?ありがとう

0 投票する
3 に答える
5824 参照

javascript - javascript の継承、「親」の変数

私は初めてOO JavaScriptをやっています。継承とプロトタイプについて読んだことがありますが、それを解読したと思いました。この小さな例を発見するまで。

私が次のことをした場合:

コンソールに次のように表示されると思います。

ただし、次のように表示されます。

問題はもちろんこの呼び出しです:

__construct メソッドで手動でリセットする以外に、TestObject の親変数を「リセット」するにはどうすればよいですか?

TestObject2 が TestObject からすべての値/メソッドを継承し、「new」が PHP OO の方法で期待どおりに動作する別の方法はありますか? (JSがこれを行っている方法は、私の脳が大学から正しく提供されているかのように、本当に奇妙であると確信していますJavaはこの点でPHPのように機能します)