Javascript的对象属性浏览器

时间:2015-01-30 22:06:24

标签: javascript object properties

我想为我的javascript对象编写一个属性浏览器(如.NET propertygrid),但作为一个新的javascript开发人员,我不确定在javascript中管理属性等的最佳方法是什么。

作为C#开发人员,我可以使用

之类的属性
[Category("My Properties")]
[Description("Simple Properties")]
[DisplayName("MyText")]
public string SomeText
{
    get { return someText; }
    set { someText = value; }
}

所以我的属性浏览器知道关于我的类的属性的必要信息。 了解房产类型也很重要。例如,如果属性类型为date,则属性浏览器应显示日期选择器。

我的第一个想法是使用变量名称。

this.date_StartDate
this.int_Length

然后属性网格可以切断名称的第一部分并显示 StartDate作为datetime属性和 长度为整数属性。

如果有更好的方法,请告诉我。

1 个答案:

答案 0 :(得分:1)

没有真正的“最佳”方式,尽管我建议不要使用变量名来表示类型。

如果您需要支持自定义类型,例如颜色,我会采用以下方法:

我的方法是自己为所有对象添加一个类型,作为属性:

var date = {
  value: "31/01/2015",
  type: "date"
};

你也可以添加一个类型对象,作为一种枚举,这样你就不会在任何时候拼错你的类型。

var types = {
   date: "date",
   number: "number"
};

只要您使用本机JavaScript类型(如数字,字符串,日期等),就不需要这样做。

在我自己的属性浏览器实验中,我只是使用typeof来确定对象的类型。 JavaScript只有一些基本类型(数组,未定义,字符串,数字,布尔值和函数),但是,有一个隐藏属性可用于将RegEx或日期与对象分开。

// this function was taken from https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/
function toType(obj) {
  return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}

typeof /aregex/ === "object" // true
typeof new Date() === "object" // true

toType(/aregex/) === "regexp" // true
toType(new Date()) === "date" // true

要获得更多灵感,您可以查看my experimental property browser,它支持数字,对象,布尔值和函数。

由于我无法准确回答您的问题,我希望这些一般信息可以帮助您找到答案。