Skip to content

Instantly share code, notes, and snippets.

@javascripter
Created January 18, 2010 04:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save javascripter/279792 to your computer and use it in GitHub Desktop.
Save javascripter/279792 to your computer and use it in GitHub Desktop.
Object.defineProperties(Object, {
seal: {
configurable: true,
enumerable: false,
value: function (object) {
var properties = Object.getOwnPropertyNames(object);
properties.forEach(function (name) {
var desc = Object.getOwnPropertyDescriptor(object, name);
desc.configurable = false;
Object.defineProperty(object, name, desc);
});
},
writable: false
},
isSealed: {
configurable: true,
enumerable: false,
value: function (object) {
var properties = Object.getOwnPropertyNames(object);
return properties.every(function (name) {
var desc = Object.getOwnPropertyDescriptor(object, name);
return !decs.configurable;
});
},
writable: false
},
freeze: {
configurable: true,
enumerable: false,
value: function (object) {
var properties = Object.getOwnPropertyNames(object);
properties.forEach(function (name) {
var desc = Object.getOwnPropertyDescriptor(object, name);
if ("value" in desc) {
desc.writable = false;
}
desc.configurable = false;
Object.defineProperty(object, name, desc);
});
},
writable: false
},
isFrozen: {
configurable: true,
enumerable: false,
value: function (object) {
var properties = Object.getOwnPropertyNames(object);
return properties.every(function (name) {
var desc = Object.getOwnPropertyDescriptor(object, name);
return !(desc.configurable || "value" in desc && desc.writable);
});
},
writable: false
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment