【问题标题】:How to construct a new type in Javascript? [duplicate]如何在 Javascript 中构造一个新类型? [复制]
【发布时间】:2012-07-28 04:03:24
【问题描述】:

可能重复:
How to “properly” create a custom object in JavaScript?

是否可以在 Javascript 中构造新类型?如果“一切都是对象”,那么您使用对象构造函数来构造新类型吗?如果是这样,这使得对象构造函数也是类型构造函数,对吗?非常感谢您的帮助,早上好 Stack Overflow!

【问题讨论】:

  • 这是您真正可以通过快速访问 Google 自己找到的内容。
  • 我认为不可能,规范中列出了可用的类型:es5.github.com/#x8。不过可能取决于您对“类型”的解释。
  • 这完全取决于“类型”这个词对你意味着什么。

标签: javascript types ecmascript-5


【解决方案1】:

您可以使用以下代码创建新的类并为其添加方法和属性。

函数类名(){ //私有属性 变量变量 1,变量 2; //公共属性 this.public_property = "Var1"; //私有方法 变种方法1 = 函数(){ //代码 }; //特权方法。这可以访问 var1、var2 和 public_property。 this.public_method1 = function() { //代码 }; } //使用“原型”的公共属性 ClassName.prototype.public_property2 = "值 2"; //使用“原型”的公共方法 //这可以访问this.public_property和public_property2。 //但不是 var1 和 var2。 ClassName.prototype.public_method2 = function() { //这里的代码 } //创建新对象 var obj1 = new ClassName(); //访问属性 obj1.public_property1 = "价值1";

您还可以扩展现有的类。

查看Crockford's website

感谢GlutamatFelix Kling

【讨论】:

  • 那些不是私有属性,而是普通变量
  • 不会将this.public_method1称为“特权方法”而将原型方法称为“公共”方法?
  • 我不想谈论“私有”和“公共”,因为 JavaScript 不支持属性的可见性。局部变量可用于在一定程度上模拟私有属性,但它与其他语言提供的功能相去甚远(因为它只是一种 hack,我不明白为什么人们试图强迫某些东西进入它不是针对的语言(但这是我个人的观点)。
猜你喜欢
  • 2020-04-08
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 2016-10-08
  • 2021-07-09
  • 2020-04-30
  • 2016-11-09
  • 1970-01-01
相关资源
最近更新 更多