diff --git a/src/DOM/Util/FFI.js b/src/DOM/Util/FFI.js index b9818b8..9004d7c 100644 --- a/src/DOM/Util/FFI.js +++ b/src/DOM/Util/FFI.js @@ -1,22 +1,27 @@ "use strict"; -exports._unsafeReadProtoTagged = function (name) { - return function (failure) { - return function (success) { - return function (value) { - var obj = value; - while (obj != null) { - var proto = Object.getPrototypeOf(obj); - var ctor = proto.constructor.name; - if (ctor === name) { - return success(value); - } else if (ctor === "Object") { - return failure(Object.getPrototypeOf(value).constructor.name); +exports._unsafeReadProtoTagged = (function () { + var tagOf = function (value) { + return Object.prototype.toString.call(value).slice(8, -1); + }; + return function (name) { + return function (failure) { + return function (success) { + return function (value) { + var obj = value; + while (obj != null) { + var proto = Object.getPrototypeOf(obj); + var ctor = tagOf(proto); + if (ctor === name) { + return success(value); + } else if (ctor === "Object") { + return failure(tagOf(value)); + } + obj = proto; } - obj = proto; - } - return failure(Object.getPrototypeOf(value).constructor.name); + return failure(tagOf(value)); + }; }; }; }; -}; +}());