2

私はこのスクリプトを持っています:

var Tord = (function () {

    Tord.prototype.getHeader = function () {
        alert('test');
    };

    return Tord;
})();

$(document).ready(function() {

    var tod = new Tord();
    tod.getHeader();
});

エラーUncaught TypeError: Cannot read property 'prototype' of undefined行 3が表示されます

私はなぜ理解していないのですか?

これが私のjsファイルのロード方法です:

    <link rel="stylesheet" href="public/jquery.mobile/jquery.mobile-1.2.0.min.css" />
    <link rel="stylesheet" href="public/style.css" />
    <script src="public/jquery-1.8.3.min.js"></script>
    <script src="public/jquery.mobile/jquery.mobile-1.2.0.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="public/cordova-2.2.0.js"></script>
    <script type="text/javascript" charset="utf-8" src="public/script.js"></script>

script.js上記のスクリプトがあります。

何か案は?ありがとう。

4

1 に答える 1

8

まさにあなたが示したコードのためです。ほら、この行が呼び出されると...

Tord.prototype.getHeader = function () {

... Tord定義されていません。しかし、これを設定すると、Tord は関数であるprototype必要があります (コンストラクター関数のプロパティである必要があるため)。Tord を関数にする努力はまったく必要ありません。

あなたがやりたいことはこれで達成できると思います:

var Tord = (function () {
    var Tord = function() {}; // to properly name the constructor
    Tord.prototype.getHeader = function () {
        alert('test');
    };
    return Tord;
})();

これにより、いくつかの外部ロジックに基づいてさまざまなコンストラクターを定義できます (ただし、一度定義することはできます)。しかし、コードの現在の状態では、それほど複雑にする必要はありません: これは...

var Tord = function() {};
Tord.prototype.getHeader = function() { ... };

...私の意見では、十分なはずです。

于 2012-12-23T09:10:00.763 に答える