objectHasKeys.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";
  2. // benchmark ways to check if object has keys
  3. // setup
  4. var obj = {foo:"foo", bar:"bar", baz:"baz", qux:"qux", stuff:"stuff", things:"things"};
  5. function hasFirstKey(o) {
  6. for (var k in o) //jshint ignore:line
  7. return true;
  8. return false;
  9. }
  10. // tests
  11. exports.objectHasKeys = {
  12. "inline: getOwnPropertyNames length > 0": function() {
  13. Object.getOwnPropertyNames(obj).length > 0;
  14. },
  15. "inline: getOwnPropertyNames length": function() {
  16. Object.getOwnPropertyNames(obj).length;
  17. },
  18. "inline: keys length > 0": function() {
  19. Object.keys(obj).length > 0;
  20. },
  21. "inline: keys length": function() {
  22. Object.keys(obj).length;
  23. },
  24. "inline: for k in obj, if hasOwnProperty, return": function() {
  25. for (var k in obj) //jshint ignore:line
  26. if (obj.hasOwnProperty(k))
  27. return true;
  28. return false;
  29. },
  30. "inline: for k in obj, return": function() {
  31. for (var k in obj) //jshint ignore:line
  32. return true;
  33. return false;
  34. },
  35. "helper: for k in obj, return": function() {
  36. hasFirstKey(obj);
  37. },
  38. };
  39. // if run directly run benchmarks
  40. if (!module.main) return require("benchmarksman").runner(exports);