From eb4e8884d94b7d01947e62ef5ea833f4dfb1a3f5 Mon Sep 17 00:00:00 2001
From: Wei Lu <luwei.here@gmail.com>
Date: Tue, 7 Oct 2014 00:08:18 -0700
Subject: [PATCH] loose instanceof: check constructor function name instead

---
 src/types.js  | 2 +-
 test/types.js | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/types.js b/src/types.js
index ddbf13d..501934f 100644
--- a/src/types.js
+++ b/src/types.js
@@ -26,7 +26,7 @@ module.exports = function enforce(type, value) {
     }
 
     default: {
-      if (value instanceof type) return
+      if (value.constructor.toString().match(/function (.*?)\(/)[1] === type.name) return
     }
   }
 
diff --git a/test/types.js b/test/types.js
index 4b6c123..fe1d149 100644
--- a/test/types.js
+++ b/test/types.js
@@ -1,7 +1,7 @@
 var assert = require('assert')
 var enforceType = require('../src/types')
 
-function CustomType() {}
+function CustomType() { return "ensure non-greedy match".toUpperCase() }
 
 var types = ['Array', 'Boolean', 'Buffer', 'Number', 'String', CustomType]
 var values = [[], true, new Buffer(1), 1234, 'foobar', new CustomType()]