1

私はjavascriptオブジェクト指向開発を理解するのは非常に新しいです。だから私はjQueryソースコードを読んでいて、同じ概念をカスタムライブラリに実装することで理解しようとしていますが、目標はコピーコードではなく、OOPの方法で少数の関数を作成することです。これが私のコードです。

(function (window) {
var myCustomClass = function () {
    debugger;
    return new myCustomClass.mycustomFunction.Init();
};
myCustomClass.mycustomFunction= myCustomClass.prototype = {
    Init: function () {
        return this;
    },
    alert: function () {
        alert('I got called');
    }
};
window.$ = window.mQuery = myCustomClass;
})(window);

そして、このように使用しようとしています:

  mQuery().alert();

しかし、それはエラーを与えています、私はそれを理解しようとしていますが、役に立ちません。私は、私はいくつかの概念が欠けていると思います、正しい方向に私を向けてください。

4

1 に答える 1

1

jQuery のソース コードを見てその概念を模倣しようとすることは、必ずしも JavaScript OOP の学習曲線を開始するための優れた方法ではありません。ソースコードからかなり複雑なライブラリを理解しようとする前に、より単純なものといくつかの基本的な本から始めて、上に進んでいくことをお勧めします。

コンストラクター " jQuery スタイル"から関数をチェーンする方法を探している場合は、次の単純なパターンをスターターとして試すことができます。

var myCustomClass = function() {
    // initialize a new instance
    if(!(this instanceof myCustomClass)) {
        return new myCustomClass();
    }
};
myCustomClass.prototype = {
    constructor: myCustomClass,
    // add some custom methods
    alert: function() {
        window.alert.apply(window, arguments);
        return this;
    },
    write: function(str) {
        document.body.innerHTML = str;
        return this;
    }
};

myCustomClass().alert('foo').write('bar');

</p>

于 2012-11-05T09:15:44.393 に答える