【问题标题】:Does the Java/C#-like definiton of classes not work in Javascript?类的 Java/C# 类定义在 Javascript 中不起作用吗?
【发布时间】:2016-07-28 19:33:03
【问题描述】:

我知道有几个与此相关的问题,但我找不到答案。

所以,作为一个 C# 的忠实粉丝,我习惯于用变量和方法声明类。谈到 Javascript,它提供了 W3schools 和 here 上看到的这些奇怪的函数声明。我有点不喜欢这些构造,因为它们不能满足我对类和函数的某种严格顺序和区分的需求,而且我想按照我习惯的可维护性方式来做。根据this,我实际上可以在声明中声明具有构造函数方法的类及其所有函数,但是我很困惑其他来源甚至没有提到该选项。另外,我不太清楚这些特定的 get 方法(get 和方法名称之间有空格)是什么意思。我可以只使用这些来与对象交互,而不仅仅是用返回值和参数定义我自己的方法吗?

这是我如何声明一个类的简单尝试,但这不起作用。

class Person {
   constructor(prename,surname) {
      this.prename = prename;
      this.surname = surname;
   }

   getFullName() {
      return this.prename + " " + this.surname;
   }
}  

【问题讨论】:

  • 后者是在 ECMAScript 6 中引入的 - 而另一篇文章是在 2006 年编写的(远在 ECMA 6 之前)
  • JavaScript 中的类声明是最新的 ECMAScript 的一部分,尚未在所有浏览器上可用。你现在应该坚持使用基于原型的 OO(恕我直言)
  • 查找TypeScript。如果你有 C# 背景,你会喜欢的。
  • ECMA 的类定义应该对 Chrome 完全可用,对吧?

标签: javascript class oop object prototype


【解决方案1】:

请注意,您链接到的文章是 2006 年发布的。那是相当古老的,Javascript 已经改变了。

具体来说,您绝对应该了解最新的官方版本 Ecmascript 6 中添加了哪些新功能。其中一项新功能是类定义的语法糖。

http://es6-features.org

【讨论】:

  • 那么我是否正确地解释了它只允许覆盖标准对象函数(如 toString())和这些 getter 和 setter 方法?所以我不能创建一个既有参数又有返回值的方法?
  • 函数不像在 c# 和 java 中那样在 javascript 中定义返回值。 Javascript 不在乎。是的,参数已定义,但未键入。是的,您可以创建一个接收 x 个参数并返回字符串对象的方法。大声笑虽然老了是轻描淡写
猜你喜欢
  • 1970-01-01
  • 2020-04-17
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 2014-09-30
  • 2016-08-31
  • 1970-01-01
相关资源
最近更新 更多