How do you check the difference between an ECMAScript 6 class and function?

Moncader :

In ECMAScript 6 the typeof of classes is, according to the specification, 'function'.

However also according to the specification you are not allowed to call the object created via the class syntax as a normal function call. In other words, you must use the new keyword otherwise a TypeError is thrown.

TypeError: Classes can’t be function-called

So without using try catch, which would be very ugly and destroy performance, how can you check to see if a function came from the class syntax or from the function syntax?

alexpods :

I think the simplest way to check if the function is ES6 class is to check the result of .toString() method. According to the es2015 spec:

The string representation must have the syntax of a FunctionDeclaration FunctionExpression, GeneratorDeclaration, GeneratorExpression, ClassDeclaration, ClassExpression, ArrowFunction, MethodDefinition, or GeneratorMethod depending upon the actual characteristics of the object

So the check function looks pretty simple:

function isClass(func) {
  return typeof func === 'function' 
    && /^class\s/.test(Function.prototype.toString.call(func));
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

How do you check the difference between an ECMAScript 6 class and function?

In ES6, how do you check the class of an object?

How do I pass constructor parameters to imported class in ECMAScript 6?

What does Arrow function do: ECMAScript 6

What is the difference between 'let' and 'const' ECMAScript 2015 (ES6)?

How does ecmascript-6 Function.prototype.bind() handle a class constructor?

ECMAScript 6 class destructor

How Do You Tell The Difference Between List and List Of Lists

How do you get the difference between two time objects in Python

How do you I calculate the difference between two timestamps in PostgreSQL?

How do you calculate the difference between the date and current date in mysql

SpriteKit- How do you check for intersections between SKNodes?

How do you check the class of a Python csv.writer instance?

How do I check the difference, in seconds, between two dates?

How do I manually check the difference between two git commits?

how do i check the difference between the current price and a certain price?

How to reliably check an object is an EcmaScript 6 Map/Set?

How do you add a method to an existing class in Perl 6?

How do you check in which module a function is defined? Python

How do you check if your function returns nothing?

JS Class: Difference between ES6 myFunc(){..} and ES5 myFunc = function() {...} in a class declaration

What is the difference between JavaScript and ECMAScript?

How do you import a function with parameters using ECMAScrip6?

ecmascript 6 how to call a static class methode by reflection

How to extend an object literal class with Ecmascript 6 classes

A shorter class initialisation in ECMAScript 6

How do you specialize a member function inside a template class?

How do you use an anonymous function inside a class in PHP?

How Do you access function props in your class component?

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  3. 3

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  4. 4

    pump.io port in URL

  5. 5

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  8. 8

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

  9. 9

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  10. 10

    How to remove the extra space from right in a webview?

  11. 11

    java.lang.NullPointerException: Cannot read the array length because "<local3>" is null

  12. 12

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  13. 13

    flutter: dropdown item programmatically unselect problem

  14. 14

    How to use merge windows unallocated space into Ubuntu using GParted?

  15. 15

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  16. 16

    Nuget add packages gives access denied errors

  17. 17

    Svchost high CPU from Microsoft.BingWeather app errors

  18. 18

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  19. 19

    12.04.3--- Dconf Editor won't show com>canonical>unity option

  20. 20

    Any way to remove trailing whitespace *FOR EDITED* lines in Eclipse [for Java]?

  21. 21

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

HotTag

Archive