Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does my arrow function have a prototype property?

As mention in document https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

Arrow functions do not have prototype property

but when I run this on fiddle, why does it gives an object? http://es6console.com/iwyii5vm/

Why it is giving a object?

var Foo = () => {};
console.log(Foo.prototype); 
like image 335
user944513 Avatar asked Feb 06 '23 11:02

user944513


2 Answers

If you run this code in a native ES6 engine, there will not be a prototype property for arrow functions.

Example of native ES6:

var Foo = () => {};
console.log(Foo.prototype); 

However, if the code is being transpiled to ES5 code, it will not be a true arrow function, and it will have a prototype property.

Example of ES6 being transpiled with Babel:

(Babel is enabled for this snippet)

var Foo = () => {};
console.log(Foo.prototype);

In the case of es6console.com, a transpiler is being used, which is why you are seeing this behavior.

like image 113
Alexander O'Mara Avatar answered Feb 08 '23 02:02

Alexander O'Mara


This seems to be an implementation detail of the way es6console implements es6 features. It works correctly in Chrome, which natively supports arrow functions.

enter image description here

like image 29
bigblind Avatar answered Feb 08 '23 02:02

bigblind