Mach3.laBlog

細かすぎて伝わらないjQuery拡張 (4) “$.configify” – Advent Calendar 2016

この記事は賞味期限切れです。(更新から1年が経過しています)

$.configify() は、ライブラリによくある options (いわゆる設定)を変更・取得する config() メソッドを、 オブジェクトに備えてあげる関数です。

$.configify(object)

使い方

var myApp = {
    _options: {
        name: null,
        age: null,
        email: null
    }
};

$.configify(myApp);

// 引数なしで全ての値を取得
myApp.config(); // => {name: null, age: null, email: null}

// key, value を渡して値を設定
myApp.config("name", "john");

// オブジェクトを渡して値を設定
myApp.config({
    age: 23,
    email: "john@example.com"
});

// key のみ渡してその値を取得
myApp.config("name"); // => "john"

// 引数なしで全ての値をオブジェクトで取得
myApp.config(); // => {name: "john", age: 23, email: "john@example.com"}
  • $.configify([object]) で引数のオブジェクトに .config() メソッドを実装します
  • _options プロパティがある場合はそのデータで初期化します
  • 設定データは options プロパティに格納されます
  • .config() メソッドは引数のタイプと数で挙動が変わります

コード

$.configify = function(obj){
    obj.config = function(){
        var args = arguments;
        this.options = this.options || {};
        switch($.type(args[0])){
            case "undefined": return this.options;
            case "string":
                if(args.length === 1){
                    return this.options[args[0]];
                }
                this.options[args[0]] = args[1];
                break;
            case "object":
                $.extend(this.options, args[0]);
                break;
            default: break;
        }
        return this;
    };
    obj.config(obj._options);
    return obj;
};

値を取得・設定する為だけのシンプルな関数です。 値を変更された場合にイベントを発火したりするのは、また後日別の関数で。

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*