实现私有和公共属性与对象组合的组合

时间:2019-04-11 09:51:41

标签: javascript function composition

我第一次使用合成而不是继承,我更喜欢它,但是我遇到的一个问题是如何着手组合需要公共和私有属性的对象。 例如,假设您要组成一个健康对象,该对象具有要公开的setHealth(value)方法,但是您还希望该对象中具有私有方法flagDeath(),该对象在要构造的对象之外不可访问。目前,我正在使用的解决方法是将对象都组合为状态(私有)对象和基础(公共)对象,状态对象通过闭包是私有的,而基础对象不是,我在下面进行了演示:

const createPlatform = (startX, startY, width, height, img) => {
    frameList.push(this);

    let state = { // Private properties
        width,
        height,
        img,
        pos:  new Coords(startX, startY),
    }

    Object.assign(state, canDraw(state, 1), canCollide(state)); // Assign private functionality

    let base = { // Public properties
        frameDo: function () {
            state.draw()
        }
    }

    return Object.assign(base); // Assign public functionality
};

0 个答案:

没有答案