要明確一點,繼承DynamicObject的類(當然是C#)和JavaScript的變量是動態的不一樣。動態對象允許實現者以編程方式確定對象具有哪些成員,包括方法。JavaScript等價於C#的DynamicObject?
編輯:據我所知,JavaScript對象在運行時可以添加任何成員。這根本不是我說的。這裏是展示DynamicObject做什麼的C#示例:
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 myobject中的屬性){console.log(property); }' – Andreas
我有一些關於JavaScript的相關問題,可能對您有些用處。 – series0ne