Skip to content

Commit

Permalink
[New] add boundFunctionsHaveNames()
Browse files Browse the repository at this point in the history
  • Loading branch information
ljharb committed Oct 21, 2019
1 parent 1dd3b01 commit 05661be
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
6 changes: 6 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,10 @@ functionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfig
return functionsHaveNames() && gOPD && !!gOPD(function () {}, 'name').configurable;
};

var $bind = Function.prototype.bind;

functionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {
return functionsHaveNames() && typeof $bind === 'function' && (function f() {}).bind().name !== '';
};

module.exports = functionsHaveNames;
15 changes: 15 additions & 0 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,18 @@ test('functionsHaveConfigurableNames', function (t) {

t.end();
});

test('boundFunctionsHaveNames', function (t) {
t.equal(typeof hasNames.boundFunctionsHaveNames, 'function', 'is a function');

var fn = function f() {};
if (typeof fn.bind !== 'function') {
t.equal(hasNames.boundFunctionsHaveNames(), false, 'bound functions do not have names, because .bind does not exist');
} else if (hasNames()) {
t.equal(hasNames.boundFunctionsHaveNames(), fn.bind().name !== '', 'bound functions have names');
} else {
t.equal(hasNames.boundFunctionsHaveNames(), false, 'bound functions do not have names, because none do');
}

t.end();
});

0 comments on commit 05661be

Please sign in to comment.