Refactored defineProperty() code into define_secure_prop() function to reduce duplicate code
parent
d5b4477109
commit
ad4b317955
64
lib/class.js
64
lib/class.js
|
@ -226,6 +226,38 @@ function setup_props( func, class_data )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to define a non-enumerable, non-writable and non-configurable
|
||||||
|
* property on the given object
|
||||||
|
*
|
||||||
|
* If the operation is unsupported, a normal property will be set.
|
||||||
|
*
|
||||||
|
* @param {Object} obj object to set property on
|
||||||
|
* @param {string} prop name of property to set
|
||||||
|
* @param {mixed} value value to set
|
||||||
|
*
|
||||||
|
* @return {undefined}
|
||||||
|
*/
|
||||||
|
function define_secure_prop( obj, prop, value )
|
||||||
|
{
|
||||||
|
if ( Object.defineProperty === undefined )
|
||||||
|
{
|
||||||
|
func[ prop ] = value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Object.defineProperty( obj, prop,
|
||||||
|
{
|
||||||
|
value: value,
|
||||||
|
|
||||||
|
enumerable: false,
|
||||||
|
writable: false,
|
||||||
|
configurable: false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attaches isAbstract() method to the class
|
* Attaches isAbstract() method to the class
|
||||||
*
|
*
|
||||||
|
@ -251,21 +283,7 @@ function attach_abstract( func, methods )
|
||||||
|
|
||||||
|
|
||||||
// attach the list of abstract methods to the class
|
// attach the list of abstract methods to the class
|
||||||
if ( Object.defineProperty === undefined )
|
define_secure_prop( func, 'abstractMethods', methods );
|
||||||
{
|
|
||||||
func.abstractMethods = methods;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Object.defineProperty( func, 'abstractMethods',
|
|
||||||
{
|
|
||||||
value: methods,
|
|
||||||
|
|
||||||
enumerable: false,
|
|
||||||
writable: false,
|
|
||||||
configurable: false,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -295,19 +313,5 @@ function attach_extend( func )
|
||||||
|
|
||||||
// if defineProperty is unsupported, do it the old fashioned way (it's just
|
// if defineProperty is unsupported, do it the old fashioned way (it's just
|
||||||
// less restrictive)
|
// less restrictive)
|
||||||
if ( Object.defineProperty === undefined )
|
define_secure_prop( func, 'extend', ext_method );
|
||||||
{
|
|
||||||
func.extend = ext_method;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Object.defineProperty( func, 'extend',
|
|
||||||
{
|
|
||||||
value: ext_method,
|
|
||||||
|
|
||||||
enumerable: false,
|
|
||||||
writable: false,
|
|
||||||
configurable: false,
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue