問題タブ [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.

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

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 が正しいアプローチである場合でも。

例やベスト プラクティスを教えていただければ幸いです。

アップデート:

解決しようとしている継承の問題をよりよく反映するように例を変更しました。

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

javascript - Object.createと直接のプロトタイプ継承

私はEcmaScript5仕様でObject.createをいじっており、多重継承型の構造を作成しようとしています。

a、b、cといういくつかの関数があるとします。プロトタイプを扱うだけで、私はこれを行うことができます:

しかし、Object.createを使用して、私はこれを行うでしょう:

どちらの方法でも同じ結果が得られると思います。

コンストラクター関数の代わりにオブジェクトに戻るので、これはちょっと不格好なようです。通常のプロトタイプの継承を行うことは、煩わしさが少なく、動作するために特別な処理を必要としないモジュラーアプリケーションにとってより理にかなっているように思われます。

私は何かが足りないのですか?コンストラクターを作成してObject.createを作成しようとする利点はありますか?または、これは既存のオブジェクトをコピーする場合にのみ役立ちますか?プロトタイプにアタッチされたプロパティと関数にのみアクセスしたいので、後でオブジェクトに追加された関数とプロパティにはアクセスしません。

または、これはどうですか(またはより良いディープコピーを使用しますが、考え方は同じです)?

0 投票する
4 に答える
5845 参照

javascript - Object.create()またはJavaScriptでnewを使用する理由はありますか?

私はnewこれまでJavaScriptでキーワードを使用してきました。私はこれまで読んでいましたがObject.create、代わりにそれを使うべきかどうか疑問に思います。よくわからないのは、構築コードを実行する必要があることが多いためObject.create、関数の実行がトリガーされないため、どのように機能するのかまったくわかりません。

誰か教えてもらえますか?その場合、Object.create代わりに使用する必要がありnewますか?

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

javascript - IE はどのバージョンから Object.create(null) をサポートできますか?

JavaScript では、さまざまな方法でオブジェクトを作成できます。

Object.create(null)しかし、IE のどのバージョンが最後のメソッド、つまりメソッドをサポートしているのかわかりません。

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

javascript - forEach ループでの Object.create の使用

javascript/html5 を使用してカードゲームを書いています

ゲームステートを ajax リクエストとして取得します。これは、プレイヤーとそのプレイヤーが手に持っているカードをリストする JSON データです。

各プレイヤーをループして、ハンドデータを次のように設定しようとしています

ページには 6 つのキャンバスがあります。各プレイヤーに 1 つ

Object.create を使用して、手の新しい「インスタンス」を作成しています。次に draw メソッドを呼び出し、キャンバス上に画像を配置します。

ただし、実際には、各プレイヤーのデータが同じインスタンスに追加されるだけです。

つまり、forEach ループを一周するたびに、hand オブジェクトに割り当てられるカードが増えていきます。

プレイヤーごとに個別のインスタンスを用意したい

では、どうすればこれを達成できますか?

データをループして、ループの反復ごとに新しい手を作成したい

ハンド変数がループから引き上げられたので、毎回同じものを取得していると思いますか?

これが手の外観です

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

javascript - 継承とObject.CreateinJavascript

このコードを見てください:

オブジェクトdictのdict[X].options.nameのすべてのプロパティの値が同じvalue(2)で、dict [X] .nameのプロパティの値が異なる理由がわかりませんか?

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

javascript - Object.createを使用する利点

この質問と似ていますが、異なります。以下のコードはJavaScriptからのものです:決定的なガイド。彼は基本的に、Object.createが存在する場合はそれを延期する継承メソッドを定義しています。それ以外の場合は、コンストラクターを使用してプロトタイプを交換し、単純な古いJavascript継承を実行します。

私の質問は、Object.createは多くの一般的なブラウザIEには存在しないので、それを使おうとすることの意味は何ですか?それは確かにコードを乱雑にし、前の質問のコメント投稿者の1人は、Object.createはそれほど速くないと述べました。

では、このECMA 5関数をときどき利用するためにコードを追加しようとすることの利点は何でしょうか。これは、これを行う「古い」方法よりも遅い場合とそうでない場合があります。

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

javascript - object.createはJavaScriptでどのように機能しますか?

私が間違っているかどうか教えてください:

プロトタイプは通常のオブジェクトです。オブジェクトがプロトタイプを継承する場合、オブジェクトはプロトタイプのプロパティをコピーするだけでなく、プロトタイプへの参照を格納します。

Firefoxでは、次のことができます。

このプロパティを使用し__proto__て、プロトタイプオブジェクトへの参照を手動で設定できます。

私も使用できますObject.create

正確には何をしているのObject.createですか?変数foodには、プロトタイプmore_foodへの参照が割り当てられていますか、それともObject.createはオブジェクトmore_foodのコピーを返すだけですか?コピーを作成するだけの場合Object.create、可変食品にmore_foodへの参照がない場合、プロトタイプチェーンはどのように機能しますか?

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

javascript - Object.create と継承

次の例の結果のオブジェクトの違いは何ですか:

oConstrコンストラクターにoConstr2プロパティが設定されていると思いますEventEmitterが、他に意味のある違いはありますか?

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

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.