【问题标题】:Do I always need to run a function that works like a class in javascript (ES5)?我是否总是需要运行一个像 javascript (ES5) 中的类一样工作的函数?
【发布时间】:2016-10-16 17:30:05
【问题描述】:

我在看Typescript 的操场,看到了这个类声明:

class Greeter {
   greeting: string;
   constructor(message: string) {
       this.greeting = message;
   }
   greet() {
       return "Hello, " + this.greeting;
   }
}

转换成这个 ES5 代码:

var Greeter = (function () {
   function Greeter(message) {
       this.greeting = message;
   }
   Greeter.prototype.greet = function () {
       return "Hello, " + this.greeting;
   };
   return Greeter;
}());

在 EcmaScript5 中,我是否总是需要运行一个类似类的函数?还是因为protoype.greet 在初始匿名函数中?

【问题讨论】:

  • 不,但最好封装原型对象以使其更易于阅读,并且如果需要,您可以拥有私有状态和助手。
  • 没有。即使您摆弄构造函数的原型,也根本不需要使用 IIFE。

标签: javascript ecmascript-5


【解决方案1】:

来自MDN

ECMAScript 6 中引入的 JavaScript 类是 JavaScript 现有的基于原型的继承的语法糖。类语法并未向 JavaScript 引入新的面向对象的继承模型。 JavaScript 类提供了一种更简单、更清晰的语法来创建对象和处理继承。

所以是的。你总是需要运行一个像类一样工作的函数。

【讨论】:

  • 我认为他们在谈论围绕 es5 类的闭包
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 2011-05-06
  • 1970-01-01
  • 2010-12-29
相关资源
最近更新 更多