Javascript 依賴容器

容器類 javascript

import Image from '../image'
import Canvas from '../canvas'
// 依賴容器

export default class DocumentContainer {
    /**
     * 容器構建類
     */
    constructor() {
        this.container = new Map()
        // 得到對象原型[prototype]
        let obj = Object.getPrototypeOf(this)
        // 獲取原型key值
        let obj_key = Reflect.ownKeys(obj)
        // 遍歷過濾 constructor 把其餘方法存入 map
        for (let i = 0; i < obj_key.length; i++) {
            obj_key[i] !== 'constructor' && this.container.set(obj_key[i].toLocaleLowerCase(), obj[obj_key[i]])
        }
        // 返回 map
        return this.container
    }

    /**
     * 依賴調用
     * @returns {*}
     * @constructor
     */
    Image() {
        return Image()
    }

    /**
     * 依賴調用
     * @returns {*}
     * @constructor
     */
    Canvas() {
        return Canvas()
    }


}

使用容器類java

// document 模擬
// export const document = new Proxy({}, {})
import DocumentContainer from '../Api/ApiContainer/documentContainer'

class _document {
    /**
     * 構造函數
     * 獲取依賴容器 new DocumentContainer()
     */
    constructor() {
        this._function = new DocumentContainer()
    }

    /**
     * e 必須是小寫字符串.
     * 根據 e 返回容器中的方法()
     * 不存在返回 false
     * @param e
     * @returns {*}
     */
    createElement(e) {
        // console.log(this._function[e])
        if (this._function.get(e)) {
            return this._function.get(e)()
        }
        console.error('容器中不存在的方法!')
        return false
    }
}


export default new Proxy(new _document, {
    /**
     * 攔截實現
     */
})
相關文章
相關標籤/搜索