diff --git a/README.md b/README.md index a98f4ec..8cb22dd 100644 --- a/README.md +++ b/README.md @@ -70,12 +70,14 @@ assert(type(-1) === 'number'); assert(type(-1.234) === 'number'); assert(type(Infinity) === 'number'); assert(type(NaN) === 'number'); +assert(type(new Number(1)) === 'number'); ``` #### string ```js assert(type('hello world') === 'string'); +assert(type(new String('hello')) === 'object'); ``` #### null @@ -100,7 +102,6 @@ assert(type({}) === 'object'); assert(type(Noop) !== 'object'); assert(type(new Noop) === 'object'); assert(type(new Object) === 'object'); -assert(type(new String('hello')) === 'object'); ``` #### ECMA6 Types diff --git a/lib/type.js b/lib/type.js index 94f60fd..be8c31b 100644 --- a/lib/type.js +++ b/lib/type.js @@ -26,8 +26,6 @@ var objectTypeRegexp = /^\[object (.*)\]$/; function getType(obj) { var type = Object.prototype.toString.call(obj).match(objectTypeRegexp)[1].toLowerCase(); // Let "new String('')" return 'object' - if (type === 'string' && typeof obj === 'object') return 'object'; - // Without support of @@toStringTag, Promise has type 'object' if (typeof Promise === 'function' && obj instanceof Promise) return 'promise'; // PhantomJS has type "DOMWindow" for null if (obj === null) return 'null'; diff --git a/test/type.js b/test/type.js index 60539af..93b02e8 100644 --- a/test/type.js +++ b/test/type.js @@ -30,10 +30,12 @@ describe('type(obj)', function () { assert('number' === type(-1.234)); assert('number' === type(Infinity)); assert('number' === type(NaN)); + assert('number' === type(new Number(2))); }); it('string', function () { assert('string' === type('hello world')); + assert('string' === type(new String('hello'))); }); it('null', function () { @@ -52,7 +54,6 @@ describe('type(obj)', function () { assert('object' !== type(Noop)); assert('object' === type(new Noop)); assert('object' === type(new Object)); - assert('object' === type(new String('hello'))); }); describe('New ECMA6 Types Stubbed', function () {