对象 属性 Javascript 的浏览器

Object Property Browser for Javascript

我想为我的 javascript 对象编写一个 属性 浏览器(如 .NET 属性grid),但作为一个新的 javascript 开发人员,我不确定在 javascript.

中管理属性等的最佳方法是什么

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

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

所以我的 属性 浏览器知道关于我的 class 属性的必要信息。 了解 属性 的类型也很重要。例如,如果 属性 的类型是日期,属性 浏览器应该显示一个日期选择器。

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

this.date_StartDate
this.int_Length

然后 属性 网格可以只截断名称的第一部分并显示 StartDate 作为日期时间 属性 和 整数长度 属性.

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

没有真正的 "best" 方法,尽管我建议不要使用变量名来表示类型。

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

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

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,它支持数字、对象、布尔值和函数。

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