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

length属性通常与Strings 和Arrays 等有序集合相关联。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 回答