gpt4 book ai didi

javascript - Mootools/Prime 中的类、选项

转载 作者:行者123 更新时间:2023-11-29 19:44:53 24 4
gpt4 key购买 nike

我将把一个项目从 Mootools 迁移到 Prime,但现在我遇到了“setOptions”的问题,该函数无法像在 Mootools 中那样工作,其中 options 对象将通过 super 向上合并原型(prototype)链并包含所有 key 。

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"}

谢谢你的想法。

最佳答案

正如邮件列表中的回答 - 我什至为您制作了一个 repo 协议(protocol) - 这在原始状态下开箱即用。

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

在 prime 中,您必须执行以下操作:

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

其中 Object.merge 是一些实用程序 - 主要实用程序或 lodash 或其他任何东西。原始的是 prime.merge()

关于javascript - Mootools/Prime 中的类、选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com