11

在几个地方(例如MSDN 上的“为 JavaScript、C# 和 Visual Basic 创建 Windows 运行时组件”),我已经看到它指定,如果你在 .NET 中编写一个你想从 JavaScript 使用的类,那么你必须使其成为密封类。

这似乎是一个任意限制。为什么 JavaScript 只能用于密封类?

4

1 回答 1

7

从 JavaScript 的角度来看,向 JavaScript 应用程序公开的 Windows 运行时对象是密封的 - 您不能将 expando 属性添加到 WinRT 对象。但是从 C++ 和 C# 开始,如果对象支持继承,则可以继承 winrt 对象(例如,大多数 Xaml 类支持继承,但大多数其他类不支持)。

WinRT 对象与 JS 隔离的原因是为了确保无论应用程序做了什么,winrt 对象的行为都是相同的 - 如果应用程序重新定义了对象上的某些函数属性,它可能会导致应用程序的其他部分行为异常。

于 2011-09-21T13:27:30.877 回答