問題タブ [defineproperty]

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 に答える
848 参照

javascript - JS ゲッター: defineProperty は、古いインライン 'get' 'set' 構文を置き換えるか、補完しますか?

インラインのオブジェクト リテラル 'get function()' スタイルと Object.defineProperty の間で機能が重複しているようです。

get https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/getの MDN ドキュメントでは、インラインの「get」関数が非推奨であるとは言及されていません。

Mozilla の Jeff Walden による 2010 年の (と思われる) 記事には、次のように記載されています。

「SpiderMonkey と Mozilla の一部の古い getter/setter 構文のサポートを削除しました。これには、広く使用されている { get property() { return "value"; }, set property(v) { } } は含まれません。これは最新の標準の一部です。」

そう:

  • インライン get/set は問題ありませんか?
  • defineProperty を支持してインライン get/set は非推奨ですか?
  • それぞれをいつ使用する必要がありますか?
0 投票する
1 に答える
71 参照

javascript - Object.create() の奇妙な動作

誰かがここで何が起こっているのか説明できますか: コードサンプル 1:

コードサンプル 2:

Object.create は、最終的なオブジェクトを拡張するときに、そのスコープをどのように壊すことができますか?

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

javascript - 定義済みプロパティで Object.defineProperty を使用する

次のようなパターンを考えてみましょう。プロパティの getter/setter インターフェイスを定義して、内部検証を非表示にする必要があります。

これにより、ID について心配する必要がなくなり、次のように「もの」を設定できます。

そしてもちろん、無効な値に設定するのを防ぎます:

しかし、オブジェクトの外部からも ID にアクセスできるようにしたいとしましょう。そのための最も自然なインターフェースは、モノのプロパティとしてです

しかし、「物」自体がゲッター/セッターである場合、そのようなプロパティを定義するにはどうすればよいでしょうか? 私は、関数、配列、アイスクリームコーンなど、JS で必要に応じて何でもプロパティをスローできることに慣れています。しかし、この場合、少なくとも私が考えることができた方法では不可能のようです。

もちろん、Constructor オブジェクト自体に「thingID」などのプロパティを単純に定義することも、モノの getter から名前と ID の両方を返すこともできます。私はそのような解決策を探しているわけではありませんが、明らかです。これは、定義されたプロパティでプロパティを定義することが実際に可能かどうかについての仮説的な質問です。