-
Notifications
You must be signed in to change notification settings - Fork 11
/
defineGetter.js
29 lines (24 loc) · 1.02 KB
/
defineGetter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 })
}