return desc.get.call(instance.proxy)
} else {
const val = globalProperties[key]
- return isFunction(val) ? val.bind(instance.proxy) : val
+ return isFunction(val)
+ ? Object.assign(val.bind(instance.proxy), val)
+ : val
}
} else {
return globalProperties[key]
delete Vue.prototype.$test
})
+ test.only('functions keeps additional properties', () => {
+ function test(this: any) {
+ return this.msg
+ }
+ test.additionalFn = () => {
+ return 'additional fn'
+ }
+
+ Vue.prototype.$test = test
+ const vm = new Vue({
+ data() {
+ return {
+ msg: 'test'
+ }
+ }
+ }) as any
+ expect(typeof vm.$test).toBe('function')
+ expect(typeof vm.$test.additionalFn).toBe('function')
+ expect(vm.$test.additionalFn()).toBe('additional fn')
+ delete Vue.prototype.$test
+ })
+
test('extended prototype', async () => {
const Foo = Vue.extend()
Foo.prototype.$test = 1