【问题标题】:Classes, Options in Mootools/PrimeMootools/Prime 中的类、选项
【发布时间】:2013-12-05 12:05:05
【问题描述】:

我会将一个项目从 Mootools 迁移到 Prime,但现在我遇到了“setOptions”问题,该函数无法像在 Mootools 中那样工作,其中 options 对象将通过超级原链合并并包含所有钥匙。

var A = prime({
    options: {
        name: 'image',
        tag: 'span',
        src: '/'
    },
    constructor: function(options){
        this.setOptions(options);
    },
    getOptions: function(){
        console.log(this.options);
    }
});

var B = prime({
    inherits: A,
    options: {
        name: 'B'
    },
    some: function(){
        return;
    }
});

mixin(A, Options);
mixin(B, Options);

var b = new B({
    tag: 'div'
});

b.getOptions(); //the result should be: {name: "B", tag: "div", src: "/"} but is {name: "B", tag: "div"}

感谢您的任何想法。

【问题讨论】:

    标签: javascript class mootools options


    【解决方案1】:

    正如邮件列表中的回答 - 我什至给你做了一个回购 - 这在原始状态下开箱即用。

    https://bitbucket.org/DimitarChristoff/primish-example/src

    语法略有不同(糖,这样做是为了让 mootools 用户满意),但它也像 mootools 那样合并选项:

    var A = prime({
        options: {
            name: 'image',
            tag: 'span',
            src: '/'
        },
        implement: [options],
        constructor: function(options){
            //console.debug(this.options);
            this.setOptions(options);
        },
        getOptions: function(){
            console.log(this.options);
        }
    });
    
    var B = prime({
        extend: A,
        options: {
            name: 'B'
        }
    });
    
    var C = prime({
        extend: B,
        options: {
            name: 'C'
        }
    });
    
    var c = new C({
        tag: 'div'
    });
    
    c.getOptions(); // as expected, all 3 options merged from right to left
    

    注意明显缺少额外的mixin() 废话和熟悉的extend 术语而不是inherits

    在黄金时期,您必须执行以下操作:

    var B = prime({
        extend: A,
        options: Object.merge(A.prototype.options, {
            name: 'B'
        })
    });
    

    其中 Object.merge 是一些实用程序 - 主要实用程序或 lodash 或其他任何东西。简而言之就是prime.merge()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 2014-10-14
      相关资源
      最近更新 更多