オブジェクトのメソッドを利用可能にする

Icultlive Icultlive

スクリプトの修正にご協力ください

問題は、関数scoreChange()を呼び出すことができないことです。

私のシングルトンメソッドはscoreChange()命令を返します。しかし、それは助けにはなりません

コンソールはここにメッセージを表示しますエラー:

Uncaught ReferenceError:scoreChangeが定義されていません

js:

var Player = (function (){
    var instance;

    function init() {
        return {
            x: 500,
            y: 500,
            health: 100,
            bullets: 50,
            speed: 10,
            score: 0,

            render: function(x, y){
                $('#player').css({
                    'left': (x || this.x) + 'px',
                    'top': (y || this.y) + 'px'
                }); 

                return;                 
            },  

            scoreChange: function(score){
                $('.score').text(score);
            },

            init: function(){
                if($('#player').length == 0){
                    $('<div class="ship_player" id="player" />').appendTo('#wrap');
                }   

                this.render(500, 500);

                return;         
            }
        };
    };

    return {
        getInstance: function (){
            if ( !instance ){
                instance = init();
            }

            return instance;
        },

        scoreChange: scoreChange
    };
})();

var player = Player.getInstance();

player.init();      

player.scoreChange(100);
ローレンス・ジョーンズ

Player関数がでオブジェクトを返していたことがわかりますgetInstanceが、Playerそれ自体は関数です。したがって、値を付加しない限り、あなたがしようとしているようにthis.varnameアクセスPlayer.varnameすることはできませんPlayer.getInstance()

これがどのように間違って表現されているかを示すものPlayer().getInstance()として、Player関数が呼び出され、getInstanceフィールドの1つとしてオブジェクトへのハンドルが返されるため、より意味的に意味があることに注意してください

私はこれをそのように書き直します。

var Player = function($player) {
  if (Player.prototype._singletonInstance)
    return Player.prototype._singletonInstance;
  Player.prototype._singletonInstance = this;

  this.$player = $player;
  this.x = 500; this.y = 500;
  this.stats = {
    speed:   10,   score:    0,
    health: 100,   bullets: 50,
  };

  this.render = function render(x,y) {
    this.$player.css({
        'left': (this.x = x || this.x) + 'px',
        'top':  (this.y = y || this.y) + 'px'
    });
    return this;
  };

  this.changeScore = function changeScore(score) {
    $('.score').text(this.stats.score = score);
  };

};

var player = new Player($('#player'));
var _player = new Player();
if (player === _player)
  console.log('Successful singleton');
player.changeScore(100); // success

また、イベントを使用して$('.score')要素をプレーヤーのスコア値にバインドすることをお勧めします。したがって、changeScoreメソッドでは、などのイベントをscoreChanged発行し、スコアを表す各dom要素がそのイベントをリッスンして適切に調整できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

React.jsのgetAllによって単一オブジェクトgetByIDとオブジェクトの配列を返すAPIを処理するための再利用可能なメソッドを作成する方法

分類Dev

オブジェクトの配列を挿入するメソッドのコードを再利用します

分類Dev

オブジェクトのメソッドの動作を事前に変更することは可能ですか?

分類Dev

オブジェクトに「メソッド」メソッドを作成する

分類Dev

メソッド内のオブジェクトを参照する

分類Dev

SpringMVCのGETメソッドにjsonオブジェクトを送信する

分類Dev

既存のオブジェクトにメソッドを追加する

分類Dev

javascriptのオブジェクトメソッド内に数値を追加する

分類Dev

Mockito-モックオブジェクトメソッドによって返されたオブジェクトのメソッドをスタブする

分類Dev

そのオブジェクトの別のinitメソッドからコード化可能なオブジェクトをデコードする方法

分類Dev

Javascriptオブジェクトのドットメソッドに関する混乱

分類Dev

jQueryオブジェクトをカスタムオブジェクトメソッドにチェーンすることは可能ですか?

分類Dev

オブジェクトに適用可能なすべてのS3メソッドを返す関数

分類Dev

モックオブジェクトのメソッドに参照型パラメータの値を設定させることは可能ですか?

分類Dev

Cythonでc ++オブジェクトを別のオブジェクトのメソッドに渡す方法

分類Dev

別のオブジェクトに委任するメソッドのテスト

分類Dev

他のオブジェクトのメソッドでオブジェクトを使用する

分類Dev

Kotlinでコンパニオンオブジェクトのジェネリックメソッドへの参照を作成することは可能ですか?

分類Dev

TypeScriptでオブジェクトのメソッドをメモ化する

分類Dev

シリアル化可能なオブジェクトのみを取得するメソッドを作成するにはどうすればよいですか?

分類Dev

Pythonで、オブジェクトのリストを操作するためのメソッドを提供する再利用可能なコードを作成するための最良の方法は何ですか?

分類Dev

オブジェクト内のメソッドにアクセスする方法

分類Dev

「TermDocumentMatrix」を使用する場合、クラス「character」のオブジェクトに適用される「meta」に適用可能なメソッドはありません

分類Dev

静的に作成されたオブジェクトのメソッドをオーバーライドする

分類Dev

オブジェクトに動的にメソッドを追加する

分類Dev

C ++呼び出し可能オブジェクトへの参照を要求する関数にクラスメソッドを渡す方法

分類Dev

オブジェクト値をメソッドに渡す

分類Dev

オブジェクト値をメソッドに渡す

分類Dev

Common Lisp:オブジェクトをメソッドに渡す

Related 関連記事

  1. 1

    React.jsのgetAllによって単一オブジェクトgetByIDとオブジェクトの配列を返すAPIを処理するための再利用可能なメソッドを作成する方法

  2. 2

    オブジェクトの配列を挿入するメソッドのコードを再利用します

  3. 3

    オブジェクトのメソッドの動作を事前に変更することは可能ですか?

  4. 4

    オブジェクトに「メソッド」メソッドを作成する

  5. 5

    メソッド内のオブジェクトを参照する

  6. 6

    SpringMVCのGETメソッドにjsonオブジェクトを送信する

  7. 7

    既存のオブジェクトにメソッドを追加する

  8. 8

    javascriptのオブジェクトメソッド内に数値を追加する

  9. 9

    Mockito-モックオブジェクトメソッドによって返されたオブジェクトのメソッドをスタブする

  10. 10

    そのオブジェクトの別のinitメソッドからコード化可能なオブジェクトをデコードする方法

  11. 11

    Javascriptオブジェクトのドットメソッドに関する混乱

  12. 12

    jQueryオブジェクトをカスタムオブジェクトメソッドにチェーンすることは可能ですか?

  13. 13

    オブジェクトに適用可能なすべてのS3メソッドを返す関数

  14. 14

    モックオブジェクトのメソッドに参照型パラメータの値を設定させることは可能ですか?

  15. 15

    Cythonでc ++オブジェクトを別のオブジェクトのメソッドに渡す方法

  16. 16

    別のオブジェクトに委任するメソッドのテスト

  17. 17

    他のオブジェクトのメソッドでオブジェクトを使用する

  18. 18

    Kotlinでコンパニオンオブジェクトのジェネリックメソッドへの参照を作成することは可能ですか?

  19. 19

    TypeScriptでオブジェクトのメソッドをメモ化する

  20. 20

    シリアル化可能なオブジェクトのみを取得するメソッドを作成するにはどうすればよいですか?

  21. 21

    Pythonで、オブジェクトのリストを操作するためのメソッドを提供する再利用可能なコードを作成するための最良の方法は何ですか?

  22. 22

    オブジェクト内のメソッドにアクセスする方法

  23. 23

    「TermDocumentMatrix」を使用する場合、クラス「character」のオブジェクトに適用される「meta」に適用可能なメソッドはありません

  24. 24

    静的に作成されたオブジェクトのメソッドをオーバーライドする

  25. 25

    オブジェクトに動的にメソッドを追加する

  26. 26

    C ++呼び出し可能オブジェクトへの参照を要求する関数にクラスメソッドを渡す方法

  27. 27

    オブジェクト値をメソッドに渡す

  28. 28

    オブジェクト値をメソッドに渡す

  29. 29

    Common Lisp:オブジェクトをメソッドに渡す

ホットタグ

アーカイブ