【发布时间】:2012-08-27 22:34:50
【问题描述】:
需要明确的是,继承 DynamicObject 的类(当然是在 C# 中)与 JavaScript 的动态变量的概念不同。 DynamicObject 允许实现者以编程方式确定对象具有哪些成员,包括方法。
编辑:我知道 JavaScript 对象可以在运行时添加任何成员。这根本不是我要说的。下面是一个 C# 示例,展示了 DynamicObject 的作用:
public class SampleObject : DynamicObject
{
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = binder.Name;
return true;
}
}
dynamic obj = new SampleObject();
Console.WriteLine(obj.SampleProperty);
//Prints "SampleProperty".
当访问 obj 的成员时,它使用 TryGetMember 以编程方式确定该成员是否存在以及它的值是什么。简而言之,成员的存在是在请求时确定的,而不是通过事先添加来确定的。我希望这能稍微澄清一下这个问题。如果您想知道,我正在尝试确定是否可以在 JavaScript 中创建一个对象,当函数调用语法用于它时,如下所示:
myAPI.uploadSomeData(data1, data2)
uploadSomeData 调用转到类似“TryGetMember”的函数,该函数使用名称“uploadSomeData”执行 $.ajax 调用以生成 URL,返回值是结果。
【问题讨论】:
-
除非我误解了您的问题,否则 Javascript 对象都以这种方式运行。在任何时候,您都可以在任何 Javascript 对象上创建新的属性和函数。
-
for (var property in myobject) { console.log(property); } -
我有一些关于 JavaScript 的相关问题,可能对你有用。
-
我认为您正在寻找 ES-Harmony Proxies,这是(不幸的是)一个实验性 API。
-
代码!!代码。向我们展示不起作用的代码。换种说法:你试过什么?
标签: c# javascript