Guest User

Untitled

a guest
Jan 16th, 2019
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. var obj = {};
  2. obj.computers = {};
  3. obj.computers.favorite = "Commodore 64";
  4. obj.computers.popular = "Apple";
  5.  
  6. if(obj != 'undefined' && obj != null) {
  7. if(obj.computers != 'undefined' && obj.computers != null)) {
  8. .....
  9.  
  10. var fav = obj.computers.favorite || 'Unknown';
  11.  
  12. var fav = getValueOrDefault(obj.computers.favorite, 'Unknown');
  13.  
  14. function(obj, default) {
  15. try {
  16. if(obj != null) {
  17. return obj;
  18. } else {
  19. return default;
  20. }
  21. } catch(ex) {
  22. return default;
  23. }
  24. }
  25.  
  26. var Nested = function() {};
  27. // prop is a dot-separated path like "foo.bar.baz"
  28. Nested.prototype.get = function(prop, _default) {
  29. var current = this;
  30. $.each(prop.split("."), function(i, e) {
  31. current = current[e] || undefined;
  32. if (current == undefined)
  33. return false;
  34. });
  35. return current || _default;
  36. }
  37.  
  38. var fav = obj.get("computers.favourite", "Linux");
  39. // this emulates
  40. var fav = obj.computers.favourite || "Linux"; // throws error
  41.  
  42. (obj && obj.computers && obj.computers.favorite) || 'Unknown'
  43.  
  44. if (obj && obj.computers) {
  45. var fav = obj.computers.favorite || 'unknown';
  46. }
  47.  
  48. function getValueOrDefault(str , obj, deflt){
  49. var a = str.split("."); o = obj;
  50. for(var i =0; i < a.length; i++){
  51. o = obj[a[i]];
  52. if(!o){
  53. return deflt;
  54. }
  55. }
  56. return o;
  57. }
  58.  
  59. var obj = {};
  60. obj.computers = {};
  61. obj.computers.favorite = "Commodore 64";
  62. obj.computers.popular = "Apple";
  63. getValueOrDefault('computers.favorite', obj, 'Unknown');
  64.  
  65. Object.prototype.isset = function (/* string */ full_path)
  66. {
  67. var props = full_path.split('.');
  68. var self = this; /* note that self is usually the window object */
  69.  
  70. for (var ii = 0; ii < props.length; ++ii)
  71. {
  72. var prop = props[ii];
  73. var hasMoreComing = ii < props.length - 1 ? true : false;
  74.  
  75. if (self[prop] !== null && typeof self[prop] === 'object' && hasMoreComing)
  76. {
  77. self = self[prop];
  78. continue; // Move up one level.
  79. }
  80. else if (hasMoreComing)
  81. return false; // ..because user queries a subproperty of a value type
  82.  
  83. return self.hasOwnProperty(prop);
  84. }
  85. };
  86.  
  87. var test = {};
  88.  
  89. test.kuk = {};
  90. console.log( test.isset('kuk') ); // Prints true.
  91.  
  92. test.kuk.fitta = {};
  93. console.log( test.isset('kuk.fitta') ); // Prints true.
  94.  
  95. test.kuk.fitta = null;
  96. console.log( test.isset('kuk.fitta') ); // Prints true.
  97.  
  98. test.kuk.fitta = undefined;
  99. console.log( test.isset('kuk.fitta') ); // Prints true
  100.  
  101. delete test.kuk.fitta;
  102. console.log( test.isset('kuk.fitta') ); // Prints false
  103.  
  104. test.kuk.fitta = 123;
  105. console.log( test.isset('kuk.fitta.doesnt.exist') ); // Prints false
Add Comment
Please, Sign In to add comment