Skip to content

Instantly share code, notes, and snippets.

@seaneagan
Created April 21, 2011 20:38
Show Gist options
  • Select an option

  • Save seaneagan/935414 to your computer and use it in GitHub Desktop.

Select an option

Save seaneagan/935414 to your computer and use it in GitHub Desktop.
seal/freeze single object properties and detect
Object.sealProperty = function(object, property) {
var pd = Object.getPropertyDescriptor(object, property) || {value: undefined};
pd.configurable = false;
return Object.defineProperty(object, property, pd);
};
Object.freezeProperty = function(object, property) {
var pd = Object.getPropertyDescriptor(object, property) || {value: undefined};
pd.configurable = false;
pd.writable = false;
return Object.defineProperty(object, property, pd);
};
// add property parameter
Object.isSealed = function(object, property) {
if(arguments.length >= 2)
{
var pd = Object.getOwnPropertyDescriptor(object, property);
return !!pd && !pd.configurable;
}
else {
// existing behavior
}
};
// add property parameter
Object.isFrozen = function(object, property) {
if(arguments.length >= 2)
{
var pd = Object.getOwnPropertyDescriptor(object, property);
return !!pd && !pd.configurable && !(("value" in pd) && pd.writable);
}
else {
// existing behavior
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment