問題タブ [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 投票する
1 に答える
823 参照

javascript - Object.create で作成されたオブジェクトにプロトタイプを設定する

次のコードが与えられた場合、プロトタイプチェーンがどのように設定されているかを理解するのに苦労しています。

具体的には、この行は create メソッドで私を混乱させます:

create メソッドがプロトタイプの Model を指す新しいオブジェクトを作成する方法を理解していますが、最後から 2 番目の行はそのプロトタイプを新しいオブジェクト (Model.prototype) で上書きしているようです。ただし、新しいオブジェクトを作成した後でも Model にメソッドを追加でき、新しいオブジェクトは引き続きそれにアクセスできるため、元のプロトタイプはまだそのままのようです。

誰かが実際に何が起こっているのかを明らかにすることができますか?

編集- このコードは、 O'reilly によるJavascript Web アプリケーションからのものであることを指摘しておきます。

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

javascript - javascript-Object.createの説明

次の正規のobject.createメソッドについて質問があります。

上記のコードの3行目で、Fオブジェクトのプロトタイププロパティをo引数のプロトタイプに設定します。

これは、oとFの両方が同じプロトタイプを指しているため、同じメンバーのセットを指していることを意味すると思います。

しかし、コードはその後、propsループ内のpropのすべてのメンバーをコピーします。

次に、すべてのメンバーを手動でコピーする場合、3行目にプロトタイプを設定する意味は何ですか?

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

javascript - Object.createはいわゆるクラスメソッドをサポートしていますか?

次のようなコンストラクターを使用してオブジェクトを作成すると、次のようになります。

(静的)クラスメソッドのように機能するコンストラクター関数に関数であるプロパティを追加できます。Object.createはそれをサポートしていないようです。そうですか?Object.createによって作成されたすべてのオブジェクトのコンストラクタープロパティは同じ関数のようです。

前もって感謝します。

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

javascript - Object.create および reference プロパティ

プロトタイプの参照プロパティをその子の間で共有するという問題にどのように対処しますか? この問題を解決するためのよく知られたパターン (コンストラクター内でプロパティを再定義する以外) はありますか? これはまったく問題ですか、それともプロトタイプの継承について私が見逃していることがありますか?

例:


アップデート:

プロトタイプの継承について学習した後、このパラダイムでのプログラミングの「自然な」方法は、オブジェクトを拡張することであり、「クラス」として使用するという意味でコンストラクターにあまり依存しないように思えます。私がブログで見た例 (また、Douglas Crockford のものとも一致しているようですObject.create) は、多かれ少なかれ次のようなものでした。

新しいインスタンスで新しい配列をコピーまたは作成する唯一の方法はコンストラクターですか? Object.createこれが「未完成」のパターンでしょうか。

答えてくれてありがとう!

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

javascript - Javascript Object.Create コピー参照をオブジェクトに

次のコードがあります

ViewModel から継承するオブジェクトがあり、それらはすべて関数として更新されます。私はjsonオブジェクト(初期)からの新しいもので更新している配列を持っています。Json オブジェクトが更新中の既存の配列よりも長い場合があるため、同じ型のオブジェクトを追加したいと考えています。配列内の最後のオブジェクトを指す Object.create(this[key][ittr -1]) を使用しており、そこから新しいオブジェクトをインスタンス化しようとしています。問題は、繰り返しのたびに新しいオブジェクトが作成されず、古いオブジェクトのコピーにすぎないことです。どうすればそれを止めることができますか?

jqueryもやってみた

x を配列にしてみました

x.update を呼び出すたびに、x に設定されている配列内のすべての値が変更されます。したがって、Object.create を呼び出すときに、実際に新しいオブジェクトを作成することはありません。

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

javascript - JavaScriptの継承:Object.createとnew

JavaScriptでは、これら2つの例の違いは何ですか。

前提条件:

Object.createを使用した継承例A:

新しいキーワードを使用した継承例B

どちらの例も同じことをしているようです。いつどちらを選びましたか?

追加の質問:以下のリンク(15行目)のコードを検討してください。ここでは、関数自体のコンストラクターへの参照がプロトタイプに格納されています。なぜこれが便利なのですか?

https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js

抜粋(リンクを開きたくない場合):

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

google-apps-script - Chromebook の Chrome で [google-apps-script] スクリプト ファイルの Object.create を使用する

Gas スクリプト ファイルで Object.create を使用しようとしています。Object.create は定義されていますが、有用なオブジェクトを返していないようです。

このコードは正常に動作します:

そのため、 Object.create が定義されていますが、期待どおりに機能していないようです。これはバグですか、それとも何か不足していますか?

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

javascript - Object.Create を使用して JavaScript オブジェクトに関数を追加する

JavaScript で Object.Create を使用しようとしています。現在、次のコードがあります。

getMake の関数を van に追加しようとしましたが、エラーが発生しました:

TypeError: オブジェクト # のプロパティ 'getMake' は、呼び出したときに関数ではありません:

van.getMake();

これは可能ですか?どのようにしますか?

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

javascript - new ではなく Object.create を使用するときに引数を渡す

この質問はUsing "Object.create" instead of "new"の重複ではありません。問題のスレッドは、使用時に引数を正しく渡すことに焦点を当てていませんObject.create


Object.createではなく を使用してオブジェクトを初期化する方法に興味がありますnew。これまでの私のコードは次のとおりです。

上からわかるように、 はMale.prototype = new Human(true);true で新しいオブジェクトを作成します。hasEyes()関数が実行されると、期待どおりに true が記録されます 。

それで、私の質問は..パラメータObject.createを渡すのと同じ方法でこれを行うにはどうすればよいですかtrue??