diff --git a/src/core/instance/inject.js b/src/core/instance/inject.js index 0afd3c81ffc..d8f3dffb35a 100644 --- a/src/core/instance/inject.js +++ b/src/core/instance/inject.js @@ -41,7 +41,9 @@ export function resolveInject (inject: any, vm: Component): ?Object { // inject is :any because flow is not smart enough to figure out cached const result = Object.create(null) const keys = hasSymbol - ? Reflect.ownKeys(inject) + ? Reflect.ownKeys(inject).filter(function (key) { + return Reflect.getOwnPropertyDescriptor(inject, key).enumerable + }) : Object.keys(inject) for (let i = 0; i < keys.length; i++) { diff --git a/src/core/util/env.js b/src/core/util/env.js index 52f5067a690..dea406beca4 100644 --- a/src/core/util/env.js +++ b/src/core/util/env.js @@ -61,7 +61,7 @@ export function isNative (Ctor: any): boolean { export const hasSymbol = typeof Symbol !== 'undefined' && isNative(Symbol) && - typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys) + typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys) && isNative(Reflect.getOwnPropertyDescriptor) /** * Defer a task to execute it asynchronously.