問題タブ [object.observe]
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.observe/unobserve はガベージ コレクションとどのように相互作用しますか?
オブジェクトにアクティブな Object.observe を設定すると、オブジェクトがガベージ コレクションされるのを防ぐことができますか? 最初に Object.unobserve を呼び出して、ガベージ コレクションを許可する必要がありますか? それとも、オブジェクトを GC すると、アクティブなオブザーバーがすべて削除されますか?
javascript - object.observe が入力フィールドの値プロパティに対して機能しないのはなぜですか?
Chrome の最新バージョンで Object.observe を使用していましたが、テキスト入力の「値」プロパティでなぜ機能しないのか疑問に思っていました。以下のコードは、「foo」プロパティの追加/変更の変更をログに記録しますが、値プロパティの変更はログに記録しません。理由を知っている人はいますか?
javascript - モデル変更の検出: Object.observe Polyfill と Angular のダーティ チェック
モデル変更の検出に関して、誰かがポリマーのポリフィルと角度の汚れたチェックのベンチマークを行っているかどうか疑問に思っています。
これらの 2 つのパフォーマンス チェックは「りんごからりんご」ですか? http://jsperf.com/angularjs-digest/50 http://jsperf.com/polymer-dirtycheck/26
次の比較では、両方のフレームワークがウォッチャー/オブザーバーを登録する必要があり、その後モデルが更新されます。一部のブラウザーでは、ポリフィルを使用する際のダーティ チェックがどのように行われるかがわかります。
http://jsperf.com/polymer-comparison
どう考えているか教えてください。
javascript - JavaScript オブジェクトのミラーリング/一方向のプロパティ同期
セキュリティ上の理由から、「ミラーリングされた」オブジェクトが必要です。つまり、オブジェクト A を作成し、A のコピーをシャロー クローンしてそれを B と呼ぶ場合、A のプロパティが変更されるたびに、B が自動的に更新されて変更が反映されることを望みますが、その逆はありません。つまり、一方向のプロパティ同期です。
私の質問: 私が気付いていない解決策がすでに世の中に出回っていますか?
observe-js ( https://github.com/polymer/observe-js ) でライブラリを実装することを考えていましたが、続行する前に周りに尋ねるべきだと思いました。ありがとう。
javascript - Object.observe() が変更のデータ パスをコールバックに提供しないのはなぜですか?
コールバックの changes 配列にはObject.observe()
、次の 4 つのプロパティを持つオブジェクトが含まれます。
- 名前
- 物体
- タイプ
- 古い値
path
ネイティブに提供されていないのはなぜですか? 例:
Object.observe()
パスを含むように拡張された Node.js モジュールがありobserved.jsますが、
ネイティブのパフォーマンスの向上が失われるのではないかと心配していますobserve()
(そうでない場合は、どのように実装されているか説明してもらえますか?)。モジュールをブラウザ化することは可能かもしれませんが、同期環境でうまく機能するとは想像できません。追加のpath
プロパティについて誰も考えていないように見えるのはなぜでしょうか。
javascript - notifier.performChange は実際に何をしますか?
私は理解しようとしていますObject.getNotifier(object).performChange
。概念的には、「マクロ」以上の変更を定義するために設計されていることを理解しています。例から、誰もが参照しているようです:
私が理解していないのはnotifier.performChange
、コールバックとしてではなく、直接渡された匿名関数を単に実行することとどう違うのですか? つまり、以下とどのように違うのでしょうか。
最新の仕様でnotifier.performChange
は、次のように通知として発行されるオブジェクトを返す可能性があることを確認しました。
これにより、元のコードでは次の必要がなくなりますnotifier.notify
が、それでも、これは砂糖以外のものですか、それとも、変更を加えて自分で通知を発行することとの間に機能的な違いはありますか?