@activeprospect/old 中文文档教程

发布于 3年前 浏览 15 项目主页 更新于 3年前

old

npm version

使 ES6 类的 'new' 关键字可选

Usage

npm install old

var old = require('old')

class Class {
  // ...
}

var Class2 = old(Class)

Class() // throws error
Class2() // creates an instance of Class

Rationale

对于 ES5“构造函数”函数,一个常见的模式是使 new 关键字可选,方法如下:

function Foo () {
  if (!(this instanceof Foo)) return new Foo()
  // do constructor stuff
}

最近,ES6 引入了类来替换构造函数。 但是,如果这些类是在没有 new 的情况下实例化的,则会抛出错误:TypeError: Class constructor Foo cannot be invoked without 'new'。 这个模块使 new 成为可选的,即使对于这些 ES6 类也是如此。

Credit

  • Thank you to Sorella in ##javascript (Freenode) for the clean solution
  • Thanks to slikts in ##javascript for the name idea

old

npm version

Make the 'new' keyword optional for ES6 classes

Usage

npm install old

var old = require('old')

class Class {
  // ...
}

var Class2 = old(Class)

Class() // throws error
Class2() // creates an instance of Class

Rationale

With ES5 "constructor" functions, a common pattern is to make the new keyword optional by doing something like the following:

function Foo () {
  if (!(this instanceof Foo)) return new Foo()
  // do constructor stuff
}

Recently, ES6 introduced classes to replace constructor functions. However, if these classes are instantiated without new, an error is thrown: TypeError: Class constructor Foo cannot be invoked without 'new'. This module makes new optional, even for these ES6 classes.

Credit

  • Thank you to Sorella in ##javascript (Freenode) for the clean solution
  • Thanks to slikts in ##javascript for the name idea
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文