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

标签 javascript jquery prototype

有什么方法可以扩展多个基于 Prototype 的 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"

jsbin

这样,您就可以通过仅在包装自调用函数范围内可用的变量来设置共享选项。结构和术语有点模糊,但希望总体思路是清晰的。

编辑

我已经重组了一些东西,以允许每个“类”在实例化时设置自己的选项。您也可以执行相同的操作来设置 App 的默认值。

关于Javascript/jQuery 原型(prototype)继承扩展默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726240/

相关文章:

Jquery img.load 问题

javascript - 原型(prototype)继承导致共享引用

JavaScript 原型(prototype)属性和原型(prototype)链接

带有 jQ​​uery 的 JavaScript 命名空间

Java 原型(prototype)克隆没有按预期工作?

javascript - 尝试使用需要身份验证的 API 使用 Google 脚本从 TDAmeritrade 提取股票报价信息

javascript - 原型(prototype)继承javascript

javascript - 自定义 HTTP header 或 cookie?自定义身份验证/授权如何帮助 CSRF?

javascript - 当通过 element.select() 选择文本时,document.getSelection().toString() 返回空字符串

javascript - 按键事件不适用于 PrintScreen 或 Windows 键