問題タブ [object-create]
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.
node.js - Node.js のモジュール内の継承に Object.create を使用する方法
一般的な車両情報を含むモジュール Vehicle があります。Vehicle オブジェクトに機能を追加する別のモジュール Car があります。
Car モジュールに Object.create を使用することを考えていますが、Object.create の呼び出し先がわかりません。
- Vehicle オブジェクトのインスタンスを取得し、Vehicle インスタンスをプロトタイプとして Object.create を実行するコンストラクタを Car モジュールに含める必要がありますか?
- それとも、createCar のように、Vehicle オブジェクトの関数で Object.create を実行する必要がありますか? この方法に関する私の問題は、Car が Vehicle から派生したものであることを気にする必要があることです。
- または、 Object.create が正しいアプローチである場合でも。
例やベスト プラクティスを教えていただければ幸いです。
アップデート:
解決しようとしている継承の問題をよりよく反映するように例を変更しました。
javascript - Object.createと直接のプロトタイプ継承
私はEcmaScript5仕様でObject.createをいじっており、多重継承型の構造を作成しようとしています。
a、b、cといういくつかの関数があるとします。プロトタイプを扱うだけで、私はこれを行うことができます:
しかし、Object.createを使用して、私はこれを行うでしょう:
どちらの方法でも同じ結果が得られると思います。
コンストラクター関数の代わりにオブジェクトに戻るので、これはちょっと不格好なようです。通常のプロトタイプの継承を行うことは、煩わしさが少なく、動作するために特別な処理を必要としないモジュラーアプリケーションにとってより理にかなっているように思われます。
私は何かが足りないのですか?コンストラクターを作成してObject.createを作成しようとする利点はありますか?または、これは既存のオブジェクトをコピーする場合にのみ役立ちますか?プロトタイプにアタッチされたプロパティと関数にのみアクセスしたいので、後でオブジェクトに追加された関数とプロパティにはアクセスしません。
または、これはどうですか(またはより良いディープコピーを使用しますが、考え方は同じです)?
javascript - Object.create()またはJavaScriptでnewを使用する理由はありますか?
私はnew
これまでJavaScriptでキーワードを使用してきました。私はこれまで読んでいましたがObject.create
、代わりにそれを使うべきかどうか疑問に思います。よくわからないのは、構築コードを実行する必要があることが多いためObject.create
、関数の実行がトリガーされないため、どのように機能するのかまったくわかりません。
誰か教えてもらえますか?その場合、Object.create
代わりに使用する必要がありnew
ますか?
javascript - IE はどのバージョンから Object.create(null) をサポートできますか?
JavaScript では、さまざまな方法でオブジェクトを作成できます。
Object.create(null)
しかし、IE のどのバージョンが最後のメソッド、つまりメソッドをサポートしているのかわかりません。
javascript - forEach ループでの Object.create の使用
javascript/html5 を使用してカードゲームを書いています
ゲームステートを ajax リクエストとして取得します。これは、プレイヤーとそのプレイヤーが手に持っているカードをリストする JSON データです。
各プレイヤーをループして、ハンドデータを次のように設定しようとしています
ページには 6 つのキャンバスがあります。各プレイヤーに 1 つ
Object.create を使用して、手の新しい「インスタンス」を作成しています。次に draw メソッドを呼び出し、キャンバス上に画像を配置します。
ただし、実際には、各プレイヤーのデータが同じインスタンスに追加されるだけです。
つまり、forEach ループを一周するたびに、hand オブジェクトに割り当てられるカードが増えていきます。
プレイヤーごとに個別のインスタンスを用意したい
では、どうすればこれを達成できますか?
データをループして、ループの反復ごとに新しい手を作成したい
ハンド変数がループから引き上げられたので、毎回同じものを取得していると思いますか?
これが手の外観です
javascript - 継承とObject.CreateinJavascript
このコードを見てください:
オブジェクトdictのdict[X].options.nameのすべてのプロパティの値が同じvalue(2)で、dict [X] .nameのプロパティの値が異なる理由がわかりませんか?
javascript - Object.createを使用する利点
この質問と似ていますが、異なります。以下のコードはJavaScriptからのものです:決定的なガイド。彼は基本的に、Object.createが存在する場合はそれを延期する継承メソッドを定義しています。それ以外の場合は、コンストラクターを使用してプロトタイプを交換し、単純な古いJavascript継承を実行します。
私の質問は、Object.createは多くの一般的なブラウザIEには存在しないので、それを使おうとすることの意味は何ですか?それは確かにコードを乱雑にし、前の質問のコメント投稿者の1人は、Object.createはそれほど速くないと述べました。
では、このECMA 5関数をときどき利用するためにコードを追加しようとすることの利点は何でしょうか。これは、これを行う「古い」方法よりも遅い場合とそうでない場合があります。
javascript - object.createはJavaScriptでどのように機能しますか?
私が間違っているかどうか教えてください:
プロトタイプは通常のオブジェクトです。オブジェクトがプロトタイプを継承する場合、オブジェクトはプロトタイプのプロパティをコピーするだけでなく、プロトタイプへの参照を格納します。
Firefoxでは、次のことができます。
このプロパティを使用し__proto__
て、プロトタイプオブジェクトへの参照を手動で設定できます。
私も使用できますObject.create
:
正確には何をしているのObject.create
ですか?変数foodには、プロトタイプmore_foodへの参照が割り当てられていますか、それともObject.createはオブジェクトmore_foodのコピーを返すだけですか?コピーを作成するだけの場合Object.create
、可変食品にmore_foodへの参照がない場合、プロトタイプチェーンはどのように機能しますか?
javascript - Object.create と継承
次の例の結果のオブジェクトの違いは何ですか:
oConstr
コンストラクターにoConstr2
プロパティが設定されていると思いますEventEmitter
が、他に意味のある違いはありますか?
javascript - Instanceof equivalent for Object.create and prototype chains
Consider such an object with a prototype chain:
How to check in runtime if C has A in its prototype chain?
instanceof
doesn't fit as it's designed to work with constructor functions, which I'm not using here.