Created
August 26, 2014 09:11
-
-
Save sTiLL-iLL/d742e8adfcdc9e0f9151 to your computer and use it in GitHub Desktop.
extend, toggleClass, and equals methods
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// functional additions to the Object prototype | |
Object.prototype.extend = function() { | |
if (arguments.length === 0) | |
return this; | |
for (var i = 0; i < arguments.length; i++) { | |
for (var property in arguments[i]) { | |
if (arguments[i].hasOwnProperty(property)) | |
this[property] = arguments[i][property]; | |
} | |
} | |
return this; | |
}; | |
Object.prototype.equals = function(x) { | |
var p; | |
for(p in this) { | |
if (typeof(x[p]) == "undefined") | |
return false; | |
} | |
for(p in this) { | |
if (this[p]) { | |
switch(typeof(this[p])) { | |
case "object": | |
if (!this[p].equals(x[p])) { | |
return false; | |
} | |
break; | |
case "function": | |
if (typeof(x[p]) == "undefined" ||(p != "equals" && this[p].toString() != x[p].toString())) { | |
return false; | |
} | |
break; | |
default: | |
if (this[p] != x[p]) { | |
return false; | |
} | |
} | |
} | |
else { | |
if (x[p]) { | |
return false; | |
} | |
} | |
} | |
for(p in x) { | |
if(typeof(this[p])=="undefined") { | |
return false; | |
} | |
} | |
return true; | |
}; | |
Array.prototype.inArray = function (value) { | |
for (var i = 0; i < this.length; i++) { | |
if (typeof value === "object") { | |
// If both are objects, uses the equals function | |
if (typeof this[i] === "object" && value.equals(this[i])) { | |
return i; | |
} | |
} | |
else if (this[i] === value) { | |
return i; | |
} | |
} | |
return false; | |
}; | |
function toggleClass(id, className) { | |
var element = document.getElementById(id); | |
var classes = element.className.split(/s+/); | |
var length = classes.length; | |
var found = classes.inArray(className); | |
if (found !== false) { | |
classes.splice(found, 1); | |
} | |
// The className is not found | |
if (length === classes.length) { | |
classes.push(className); | |
} | |
element.className = classes.join(" "); | |
}; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment