javascript - How do you check the difference between an ECMAScript 6 class and function? -
in ecmascript 6 typeof
of classes is, according specification, 'function'
.
however according specification not allowed call object created via class syntax normal function call. in other words, must use new
keyword otherwise typeerror thrown.
typeerror: classes can’t function-called
so without using try catch, ugly , destroy performance, how can check see if function came class
syntax or function
syntax?
i think simplest way check if function es6 class check result of .tostring()
method. according es2015 spec:
the string representation must have syntax of functiondeclaration functionexpression, generatordeclaration, generatorexpression, classdeclaration, classexpression, arrowfunction, methoddefinition, or generatormethod depending upon actual characteristics of object
so check function looks pretty simple:
function isclass(func) { return typeof func === 'function' && /^class\s/.test(function.prototype.tostring.call(func)); }
Comments
Post a Comment