| var $ = require('../internals/export'); |
| var ReflectMetadataModule = require('../internals/reflect-metadata'); |
| var anObject = require('../internals/an-object'); |
| var getPrototypeOf = require('../internals/object-get-prototype-of'); |
| |
| var ordinaryHasOwnMetadata = ReflectMetadataModule.has; |
| var toMetadataKey = ReflectMetadataModule.toKey; |
| |
| var ordinaryHasMetadata = function (MetadataKey, O, P) { |
| var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); |
| if (hasOwn) return true; |
| var parent = getPrototypeOf(O); |
| return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; |
| }; |
| |
| // `Reflect.hasMetadata` method |
| // https://github.com/rbuckton/reflect-metadata |
| $({ target: 'Reflect', stat: true }, { |
| hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) { |
| var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); |
| return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); |
| } |
| }); |