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

问题描述 投票:0回答:1

我是第一次使用合成而不是继承,我更喜欢它,但是我遇到的一个问题是如何着手组合需要公共和私有属性的对象。例如,假设您要组成一个健康对象,该对象具有要公开的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
};
javascript function composition
1个回答
-2
投票

谢谢你。想知道同一件事。

© www.soinside.com 2019 - 2024. All rights reserved.