1

createModalをModalというクラスに置き換えようとした次のコードがあります。ただし、このタイプスクリプトを試したところ、エラーが発生し、「リンクは現在のスコープに存在しません」と表示されます。

module Admin.MyAccount.Access {

    export function createModal(link: Link) {
        link.Modal.$Modal = $.modal({
            resizeOnLoad: true
        });
        link.Modal.$Modal.applyTemplateSetup()
    }

    export class Modal {
        link: Link;
        constructor (link: Link) {
            this.link = link;
        }
        create() {
            link.Modal.$Modal = $.modal({      // < Error here
                resizeOnLoad: true
            });
            link.Modal.$Modal.applyTemplateSetup() // < Error here
        }

    }

}

関数を使用しているときは、次のように関数を呼び出します。

        createModal(link);

私はここで何か間違ったことをしていますか?create()内のリンクにアクセスできないのはなぜですか?また、静的関数を使用してこれを行うこともできます。Modalの新しいインスタンスを作成するためにnewを呼び出す必要がないので、それは簡単でしょうか?

4

1 に答える 1

1

thisクラススコープにアクセスする必要があるため、呼び出し に追加する必要があります。


使用するかどうかを選択する限りstatic、オブジェクトをどのように使用するかによって決まります。オブジェクトの複数のインスタンスがありますが、常に 1 つのコピーだけが必要ですか? その場合は、 を使用しますstatic

これは、すべてのモーダルがリンクされ、常に 1 つしか存在しないことを意味します。

JavaScript で static を使用する

静的関数 (つまり、作成するオブジェクトの数に関係なく、関数のコピーは 1 つだけです) は、ユーティリティ関数にとって非常に便利です。

于 2012-11-15T14:01:03.460 に答える