Skip to content

Instantly share code, notes, and snippets.

@sTiLL-iLL
Created August 26, 2014 09:11
Show Gist options
  • Save sTiLL-iLL/d742e8adfcdc9e0f9151 to your computer and use it in GitHub Desktop.
Save sTiLL-iLL/d742e8adfcdc9e0f9151 to your computer and use it in GitHub Desktop.
extend, toggleClass, and equals methods
// 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