2

javascriptについてもっと学ぶために小さなライブラリを開発しています

私は連鎖パターンを使用しています:

(function(window) {
    var myLibrary = function(iD) {
        var e = document.getElementById(iD),
            methods = {
                one: function(val) {
                    e.innerHTML = val;
                    return this; // maintain chainability
                },
                two: function(val) {
                    alert(val);
                    return this; // maintain chainability
                }
            };
        return methods;
    };
    window.myLibrary = myLibrary;
})(window);

連鎖はいいのですが、JavaScriptの内部プロパティが使えません。例えば

myLibrary("ID").length

アイテムを返すアイデアはありますか?

4

1 に答える 1

2

lengthStringプロパティは通常、 や などの順序付けられたコレクションに関連付けられArrayます。methodsとしてObject、 はどちらでもありません。

したがって、 を持たせたい場合は、それlengthを与える必要があります:

methods = {
    length: e == null ? 0 : 1,

    // ...
};
myLibrary('ID').length

または、それ自体を持つメソッドreturn以外のメソッドを定義します。thislength

methods = {
    html: function () {
        return e.innerHTML;
    },

    // ...
};
myLibrary('ID').html().length
于 2013-07-23T05:34:09.183 に答える