Object.assign()一个深层对象

时间:2016-05-26 14:41:34

标签: javascript

我有一个基础对象ProfileDialog,我使用Object.assign()进行扩展。

var ProfileDialog = function (containerObj) {
    this.init = function () {
        this.container = containerObj;
    };

    this.render = function () {
        let content = document.createElement('div');
        content.innerText = 'Dialog here';
        this.container.appendChild(content);
    };

    this.init();
    this.render();
};

密新:

var DialogMixin = function () {
    return {
        open: function () {
            this.container.style.display = 'block';
        },
        close: function () {
            this.container.style.display = 'none';
        }

    }
};

现在我做了作业:

Object.assign(ProfileDialog.prototype,DialogMixin());

效果很好,this上下文在openclose方法中解析得很好。

但是,当我将mixin放在更深层的结构中时,将它放在actions属性中:

var DialogMixin = function () {
    return {
        actions: {
            open: function () {
                this.container.style.display = 'block';
            },
            close: function () {
                this.container.style.display = 'none';
            }
        }
    }
};

上下文变为actions对象,因此代码会中断。

如果将对象放入深层结构中,如何使用新方法正确扩展对象?

1 个答案:

答案 0 :(得分:0)

我唯一能想到的就是使用echo 'string<br/>'; 绑定bind

类似

this

请参阅https://jsfiddle.net/zqt1me9d/4/