有什么方法可以扩展多个基于Prototype的Javascript构造函数的默认选项吗?
我正在尝试在Events对象中获取选项对象,是否可能?
var Website = function(options){
this.options = $.extend({}, this.defaults, options);
}
Website.prototype = {
constructor : Website,
defaults: {
navigation: $('#navigation'),
footer : $('#footer')
}
init: function(){
}
};
var Events = function(){
this.init()
}
Events.prototype = {
constructor: Website,
init:function(){
console.log(...)
}
}
答案 0 :(得分:0)
这是一个重要的重写,但我建议将默认值存储在两个“类”可以共享的外部变量中:
var App = (function ($) {
var defaults = {
navigation: "nav",
footer : "foot"
};
var Website = function (options) {
this.options = $.extend({}, defaults, options);
this.echo = function (message) {
console.log(message);
};
};
var Events = function (options) {
this.options = $.extend({}, defaults, options);
this.echoTwo = function (message) {
console.log(message + message);
};
};
return {
Website: Website,
Events: Events
};
}(jQuery));
var website = new App.Website({navigation: "changed"});
website.echo(website.options.navigation + ' '+ website.options.footer); // "changed foot"
var events = new App.Events({footer: "bar"}); //
events.echoTwo(events.options.navigation + ' '+ events.options.footer); // "nav barnav bar"
这样,您可以通过仅在包装,自调用函数范围内可用的变量设置共享options
。结构和命名有点模糊,但希望一般的想法是清楚的。
修改
我重组了一些东西,允许每个“类”在实例化时设置自己的选项。您也可以这样设置App
的默认值。