提问人:Hoshi 提问时间:11/20/2020 更新时间:11/20/2020 访问量:24
是否可以在 JavaScript/jQuery 中制作组合对象?
Is it possible to make a composed object in JavaScript/jQuery?
问:
我正在构建一个特定于站点的库,我想将其作为单个文件进行维护,但使用统一的 API 进行部署。
web = (function($){
function web(opts) {
this.id = otherLibrary.sniffID(opts.cipher);
this.args = parseParams();
if( opts.hide && opts.hide == true ) {
$(`#${opts.frameid}${this.id}).hide();
}
return this;
}
function parseParams() {
var sk = {};
var x = location.search;
var y = x.substring(x.indexOf('?')+1);
var z = y.split('&');
for (var i of z) {
m = i.split('=');
if( m[1] != undefined ) {
if (['true','false'].includes(m[1]) ) {
sk[m[0]] = eval(m[1]);
} else {
sk[m[0]] = decodeURIComponent(m[1]);
}
} else {
sk[m[0]] = true;
}
}
return sk;
}
return minn;
})(jQuery);
但是当我将另一个文件连接到发行版中时,我遇到了范围问题。
/** JS Helpers */
web.js = (function ($) {
function debounce(func, wait) {
var timeout;
return function () {
var context = this, args = arguments;
var later = function () {
timeout = null;
if (!immediate) func.apply(context, args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
};
return {
debounce: debounce
}
})(jQuery);
在客户端代码中,我这样做:
var myWeb = new web({cipher: getCipher(), frameID: this.frame.id});
if( myWeb.args.localizeData ) {
load('dictionary');
}
window.on('resize', myWeb.js.debounce(onResize)); // fails!
而且,当然,最后一行不起作用 - 我必须使用静态引用 ,这意味着密钥路径中隐含的集装箱船是假的,它不是一个对象,而是 2 个对象。web.js.debounce
有没有一种模式可以做我想要的事情,让一个对象及其 API 从多个独立文件构建并组装起来进行分发?也许换一种说法:是否可以躲避类型的jQuery对象?有没有办法在它们之间共享状态,例如,是否可以在语句中传递引用?web.user.email
opts.fromAddress
new web(opts)
答: 暂无答案
下一个:在闭合内使用下划线去抖动功能
评论