Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重载属性用于什么?_Javascript_.net_Windows Runtime_Overloading_Windows Store Apps - Fatal编程技术网

Javascript 重载属性用于什么?

Javascript 重载属性用于什么?,javascript,.net,windows-runtime,overloading,windows-store-apps,Javascript,.net,Windows Runtime,Overloading,Windows Store Apps,因此,在设计API时,我发现Javascript和重载以及所有有趣的东西都存在一些问题。我认为重载属性可能会有所帮助。不过,提出这个问题的原因是,我找不到任何关于它的用途的文档。提供非常有用的信息 将该方法标识为支持 超载 显然,我需要更多的信息。那么,这到底是用来干什么的?构造函数的string方法参数用于什么 如文档所示,重载属性供不支持重载的语言使用。例如,考虑使用IDL和C++而不是C++ +CX编写ABI层的Windows运行时代码。在IDL中,不能重载接口函数:接口的每个函数必须具有

因此,在设计API时,我发现Javascript和重载以及所有有趣的东西都存在一些问题。我认为重载属性可能会有所帮助。不过,提出这个问题的原因是,我找不到任何关于它的用途的文档。提供非常有用的信息

将该方法标识为支持 超载


显然,我需要更多的信息。那么,这到底是用来干什么的?构造函数的string方法参数用于什么

如文档所示,重载属性供不支持重载的语言使用。例如,考虑使用IDL和C++而不是C++ +CX编写ABI层的Windows运行时代码。在IDL中,不能重载接口函数:接口的每个函数必须具有不同的名称

让我们看一个例子。下面是Windows中的IurrunTimeCelsF工厂定义,您可以在Windows 8 SDK:

中找到它。
interface IUriRuntimeClassFactory : IInspectable
{
    [overload("CreateUri")] HRESULT CreateUri([in] HSTRING uri, [out] [retval] Windows.Foundation.Uri** instance);
    [overload("CreateUri")] HRESULT CreateWithRelativeUri([in] HSTRING baseUri, [in] HSTRING relativeUri, [out] [retval] Windows.Foundation.Uri** instance);
}
这两个接口函数在IDL中用不同的名称声明。这两个函数都使用IDL重载属性进行注释。该属性告诉IDL编译器这两个成员函数都是CreateUri的逻辑重载

当midlrt IDL编译器从此IDL生成WinMD文件时,它将交换重载名称和接口函数名称,以便在元数据中,这两个接口函数的名称都为CreateUri,并且这两个函数的重载属性将应用于它们,第一个函数的原始名称为CreateUri,第二个是创建相对论。您可以通过使用ildasm查看参考Windows.winmd中的元数据来观察这一点


从WinMD生成IDL时,会发生反向转换:使用重载属性注释的接口函数使用该属性提供的名称命名。这允许在IDL和WinMD之间进行无损往返。

因此,基本上,在C++/IDL之外它是无用的?这是使用它的一个例子。但是,任何其他语言投影都可能使用重载信息。这似乎不起作用。我有[OfLooFoo]无效的FoBoSraseX和[OfLooFoo]无效的FoopangMeCasLasx,并获得编译器错误。FO的多个重载具有相同的重载名称FoO,由WiDOWS.Buffig.Meta Addia.OfLoad AdvestWew指定,您的示例是向后的。在C++/CX和.NET projections C和VB.NET中,映射是直接的:源代码中函数的实际名称是元数据中函数的名称。重载属性中的字符串仅存储在属性中,供不支持IDL/C++等重载的使用者使用。请注意,上述Foo是不合法的。Windows运行时重载必须因in参数的算术数不同而不同,上面两个Foo方法具有相同的算术数,因此它们是非法的。