問題タブ [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.
javascript - Object.create は、Chrome の proto オブジェクトのコンソール出力を変更しますか?
Object
Chrome のコンソールの一部のオブジェクトがコンストラクター関数名の代わりに表示されていることに気付いたとき、私は今日いじっていました。
これは奇妙だったので、次のコードに要約しました。
上記のコードb
では、 は a を介して作成されてObject.create
いませんが、ログに記録すると Object と表示されます。そこにはタイプミスはなく、誤って c について質問しています。b のログは、そのオブジェクトに触れていないときに変更されました。別のインスタンスを作成してc
、変更しないでくださいb
。
これは Chrome のバグですよね?とにかくChromeにここで正しく報告させる方法はありBaz
ますか?
これは、デバッグ目的で重要です。
更新バグが提出されました: https://code.google.com/p/chromium/issues/detail?id=478522
java - 春の getBean が非常に遅い
以下のコードは、多くの Bean を作成し、さらに使用するためにそれらをリストに追加するために使用されます。
manyLongs は、約 350000 項目の ArrayList です。おそらくもっとある。このコードの実行には約 2 分かかることに気付きました。私が作成してタスクに追加しようとしている Bean はプロトタイプです。
350K の新しいオブジェクトを作成するには時間がかかることは理解できますが、2 つのフィールドの軽量オブジェクトには 2 分では少し長すぎるように思えます。デザインをまったく変更せずにこれらのスプリング オブジェクトを効率的に作成する方法はありますか?
アップデート
ルイジ・メンドーサは正しかった。コンストラクターには、オブジェクトの作成に影響を与える 2 つのポイントがありました。1 つ目は、私が遅延読み込み呼び出しだったということですが、最悪の事態は、コンストラクター内での JSON オブジェクトの逆シリアル化でした。ただし、そこに存在する必要はありません。
テストするために、Spring を使用せずに Bean を作成することを確認しました。明らかに高速ですが、Spring よりもわずか数秒高速です。
javascript - javascript で Object.create(someprototype) を使用して作成されたオブジェクトのコンストラクター
Object.create(someObj.prototype) を使用して作成されたオブジェクトには、someObj としてコンストラクターがあります。
javascript - Object.create がコンストラクタよりも遅いのはなぜですか?
バックグラウンド
私が管理しているプロジェクトでは、多くの古い ES6 より前のブラウザーではネイティブにサポートされていないマップ (文字列キーのみ) の代わりとして、null プロトタイプ オブジェクトを広範囲に使用しています。
基本的に、その場で null プロトタイプ オブジェクトを作成するには、次を使用します。
これにより、新しいオブジェクトには、この特定のユースケースには望ましくない「toString」、「constructor」、「__proto__」などの継承されたプロパティがないことが保証されます。
このパターンはコード内で複数回出現するため、プロトタイプが null プロトタイプを持ち、独自のプロパティを持たないオブジェクトを作成するコンストラクターを作成するというアイデアを思いつきました。
次に、独自または継承されたプロパティを持たないオブジェクトを作成するには、次を使用できます。
問題
パフォーマンスを改善するためにテストを書いたところObject.create
、すべてのブラウザーで、アドホック プロトタイプを持つ追加のコンストラクターを使用する方法よりも、ネイティブ アプローチのパフォーマンスが予想外にはるかに遅いことがわかりました: http://jsperf.com/blank-object -作成。
後者の方法は、前者の場合には発生しないユーザー定義のコンストラクターの呼び出しを伴うため、後者の方法は遅くなると予想していました。
このようなパフォーマンスの違いの原因は何でしょうか?
javascript - Object.create() と Object.assign() を使用してオブジェクトを作成することの違いは何ですか?
次のコードを検討してください:
各オブジェクトが異なる方法で作成されているため、obj1
との間に違いはありますか?obj2
java - Java オブジェクト作成の違い
Java の OOP の概念は初めてです。この二つの事件の違いは何ですか?
1.
2.
良い説明は大歓迎です。ありがとう
javascript - プロトタイプ チェーンの実行方法が異なるのはなぜですか?
私は Javascript についてもっと学び、プロトタイプ チェーンを少し掘り下げようとしています。この問題に遭遇したとき、HTMLElement の小さな拡張機能を作成したいと考えていました。
私が理解している方法は、渡されたオブジェクトが新しいオブジェクトのコンテキストを作成するために使用され、新しく作成されたオブジェクトのプロトタイプチェーンの最初のリンクがメソッドObject.create
に渡されたオブジェクトを指すことです。Object.create
その場合、bar
以下のメソッドで使用される拡張のメソッドは、この新しく作成されたオブジェクトにコンテキストとして HTMLElement が与えられるため、私には正しいアプローチのように見えました。
ただし、新しい子要素をにfoo
追加することでメソッドが正しく機能しますが、そうではありません。div
<span id="test"></span>
bar
ブラウザーで開発者ツールを開き、appendChild
それらで呼び出された 2 つのオブジェクトのプロトタイプ チェーンをたどろうとすると、それらはほとんど同じように見えます。
この例でjsFiddleを作成しました。
誰かがなぜ機能しないのか説明してもらえますかbar
? bar
実際、より正しいアプローチですか?もしそうなら、正しく動作するようにどのように設定する必要がありますか?
助けてくれてありがとう!!!
javascript - プロトタイプの変更を防ぐには?
このコードでは、プロトタイプが変更される可能性があります。
プロトタイプの変更を防ぐにはどうすればよいですか?
javascript - Object.create() を使用する場合、オブジェクト キーを他のオブジェクト キーとどのように参照しますか
私は工夫された電卓モジュールを作ることによって Object.create を学ぼうとしています。試しbind
てみました を削除しようとしましthis
たが、結果はありません。
質問:
クラスの場合のように、要素の別のプロパティ内でオブジェクトのプロパティをどのように参照しますか。それとも、私の例はあまり良いパターンではありませんか? もしそうなら、イベントリスナーを提供するために電卓オブジェクトをどのように構築すればよいcreation
ですか?
電卓.js
HTML: