diff --git a/packages/babel-helpers/src/helpers.js b/packages/babel-helpers/src/helpers.js index b25b747c97..b521cb06b9 100644 --- a/packages/babel-helpers/src/helpers.js +++ b/packages/babel-helpers/src/helpers.js @@ -587,7 +587,7 @@ helpers.wrapNativeSuper = helper("7.0.0-beta.0")` helpers.instanceof = helper("7.0.0-beta.0")` export default function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { - return right[Symbol.hasInstance](left); + return !!right[Symbol.hasInstance](left); } else { return left instanceof right; } diff --git a/packages/babel-plugin-transform-instanceof/test/fixtures/instanceof/instanceof/exec.js b/packages/babel-plugin-transform-instanceof/test/fixtures/instanceof/instanceof/exec.js index 187f18b8f7..eb681c286f 100644 --- a/packages/babel-plugin-transform-instanceof/test/fixtures/instanceof/instanceof/exec.js +++ b/packages/babel-plugin-transform-instanceof/test/fixtures/instanceof/instanceof/exec.js @@ -4,6 +4,11 @@ foo[Symbol.hasInstance]= function () { return true; }; var bar = {}; expect(bar instanceof foo).toBe(true); + +var qux = {}; +qux[Symbol.hasInstance]= function () { return NaN }; +expect(bar instanceof qux).toBe(false); + expect(new String).toBeInstanceOf(String); //