1

ボタンをクリックしたときにオブジェクト内のメソッドを実行しようとしていますが、どうやら実行されません。私は何を間違っていますか?Chrome のコンソールで変数「price」を見ましたが、ボタンを押す前後で「undefined」と表示されます。

Javascript コード:

function Upgrade () {
    this.buy = function(){
        this.price = 40;
    };
}

var upg = new Upgrade();

var button = document.getElementById("button");

button.onclick = upg.buy;

HTML コード:

<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
    </head>
    <body>
        <div>TODO write content</div>
        <button id="button" type="button">Upgrade 1</button>
    <script src='newjavascript.js'></script>
    </body>
</html>
4

2 に答える 2

1

関数をオブジェクト プロパティに割り当てるthisと、新しいオブジェクト (button例では) を参照します。

代わりに次のコードを使用してください。

function Upgrade () {
    var that = this;
    this.buy = function(){
        that.price = 40;
    };
}

また:

button.onclick = upg.buy.bind(upg);

MDN を読むことをお勧めします -このキーワード

于 2013-11-02T00:17:23.727 に答える