defineGetter.js 1.02 KB
module.exports = function(object, propertyName, getter) {
	module.exports = object.defineGetter ? _w3cDefineGetter
		: object.__defineGetter__ ? _interimDefineGetter
		: Object.defineProperty ? _ie8DefineGetter
		: function() { throw 'defineGetter not supported' }
	return module.exports(object, propertyName, getter)
}

function defineGetter(object, propertyName, getter) {
	var fn = object.defineGetter ? _w3cDefineGetter
		: object.__defineGetter__ ? _interimDefineGetter
		: Object.defineProperty ? _ie8DefineGetter
		: function() { throw new Error('defineGetter is not supported') }
	
	module.exports.defineGetter = fn
	fn.apply(this, arguments)
}

var _w3cDefineGetter = function(object, propertyName, getter) {
	object.defineGetter(propertyName, getter)
}

var _interimDefineGetter = function(object, propertyName, getter) {
	object.__defineGetter__(propertyName, getter)
}

var _ie8DefineGetter = function(object, propertyName, getter) {
	Object.defineProperty(object, propertyName, { value:getter, enumerable:true, configurable:true })
}