いくつかの場所で(たとえば、MSDNの「 JavaScript用のWindowsランタイムコンポーネントの作成、C#およびVisual Basicで」)、JavaScriptから使用するクラスを.NETで作成する場合は、封印されたクラスにします。
これは恣意的な制限のようです。JavaScriptが封印されたクラスでのみ機能するのはなぜですか?
いくつかの場所で(たとえば、MSDNの「 JavaScript用のWindowsランタイムコンポーネントの作成、C#およびVisual Basicで」)、JavaScriptから使用するクラスを.NETで作成する場合は、封印されたクラスにします。
これは恣意的な制限のようです。JavaScriptが封印されたクラスでのみ機能するのはなぜですか?
JavaScriptアプリケーションに公開されるWindowsランタイムオブジェクトは、JavaScriptの観点から封印されています。WinRTオブジェクトにexpandoプロパティを追加することはできません。ただし、C ++およびC#からは、オブジェクトが継承をサポートしている場合、winrtオブジェクトを継承できます(たとえば、ほとんどのXamlクラスは継承をサポートしていますが、他のほとんどのクラスはサポートしていません)。
WinRTオブジェクトがJSから封印される理由は、アプリが何をしたかに関係なく、winrtオブジェクトが同じように動作するようにするためです。アプリがオブジェクトの関数プロパティを再定義すると、アプリの他の部分が誤動作する可能性があります。