Comments (7)
@klimashkin you could also just do
object != null && object.constructor === Array
Which is 400% faster again. See https://jsperf.com/array-isarray-vs-instanceof-array/12
from classnames.
Yep, but it have a point if you check array.
If it is not array (and commonly we have no array as argument, more common are objects and booleans) faster to use Array.isArray
Because false.constructor === Array
is actually means Object(false).constructor === Array
from classnames.
You're right, however if we just moved the else if (check if Array
branch to be last, then it would be taking advantage of the fact that all other options failed, so the assumption that is an Array
is therefore more likely.
from classnames.
But if we'll make array check the last, we should move check for object above, ie replace 'object' === typeof arg
with Object.prototype.toString.call(arg) === '[object Object]' which is slower
from classnames.
from classnames.
Mentioned in #24 but also relevant here:
The issue with using instanceof Arrray or thing.constructor === Array is that it may fail when multiple frames are in use, because different frames' constructors have different identities, so frame 1's Array !== frame 2's Array.
from classnames.
Merged in #24
from classnames.
Related Issues (20)
- Throwing an exception when accessing non-existent classes HOT 2
- why not using one build tool for publish the npm package? HOT 2
- Incomplete type signature for classnames/bind HOT 2
- Advanced typing for classnames/bind HOT 4
- Explain to me about "cx" HOT 1
- Getting error says 'this' context of type 'void' is not assignable HOT 4
- [Question] When I used Object's value to computed key, what happened? HOT 2
- SyntaxError: Unexpected end of script (Mobile Safari) HOT 5
- When no classes are selected, classNames should return null HOT 5
- Vulnerable dependencies (indirect security issues) HOT 1
- How to erase or replace the properties of the conditional class from external component? HOT 1
- why number can be a className HOT 1
- Can we add exports field for this package? HOT 4
- Need a maintainer? HOT 7
- Preparing for version 3.0 HOT 9
- Should we support CommonJS for 3.0? HOT 5
- No default export (v2.5.1) HOT 5
- Import from 'classnames' broken since v2.5.0 HOT 5
- Please use GitHub Releases HOT 6
- Unable to do v2 releases HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from classnames.