首页 > 解决方案 > 如何公开属性对象的方法,就好像它们是对象自己的方法一样?JavaScript

问题描述

我有一个很大的冲动做这样的事情:

class A {
    constructor(){}
    age() { return 15; }
}

class B {
    constructor() {
        this.a = new A();
    // DO SOMETHING THAT THIS IS POSSIBLE:
    }
}

B b = new B();
b.age();

如何公开该方法,就好像它是 objectb自己的方法一样?无论编号和名称如何,我都需要对属性的每个方法执行此操作。

注意:我不能使用继承。

标签: javascriptobject

解决方案


我会尝试实施BProxy.

class A {
    constructor(){}
    age() { return 15; }
}

const b = new Proxy(new A(), {
    get: function(object, property) {
        if (typeof object[property] === 'function') {
            return object.property();
        }
    }
    set: function(object, property) {}
}

您可以在MDN上阅读更多内容。


推荐阅读