Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/jQuery原型继承扩展默认值_Javascript_Jquery_Prototype - Fatal编程技术网

Javascript/jQuery原型继承扩展默认值

Javascript/jQuery原型继承扩展默认值,javascript,jquery,prototype,Javascript,Jquery,Prototype,有没有办法扩展多个基于原型的Javascript构造函数函数的默认选项 我正在尝试获取事件对象中的选项对象,是否可能 var Website = function(options){ this.options = $.extend({}, this.defaults, options); } Website.prototype = { constructor : Website, defaults: { navigation: $('#navigat

有没有办法扩展多个基于原型的Javascript构造函数函数的默认选项

我正在尝试获取事件对象中的选项对象,是否可能

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(...)
    }

}

这是一次重要的重写,但我建议将默认值存储在两个“类”可以共享的外部变量中:

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"

通过这种方式,您可以通过仅在包装、自调用函数范围内可用的变量设置共享的
选项。结构和命名法有点模糊,但希望总体思路清晰

编辑


我重新构造了一些东西,允许每个“类”在实例化时设置自己的选项。您也可以同样为
App
设置默认值

我看不到
事件
网站
之间有任何继承关系?您是否只需要
Event.prototype.defaults=Website.prototype.defaults
?我想知道,如何从网站获取属性或defaults对象,并在Events对象中使用它们?是的,只需访问
Website.prototype.defaults
!谢谢,有没有办法访问网站中的属性选项并在对象事件中使用它?代码中没有任何对象(实例)?如果你有一个,你当然可以很容易地访问它的
.options
属性。基本上我想弄清楚的是:如何用构造函数编写多个对象,访问属性,并在另一个对象内调用方法。我试图创建单独的对象,以便更好地组织代码。以下是我的示例:[link]()