-1
var myObj = {
    name:"mike",
    go:function(){
        console.log(this.name);
    }

}

myObj.go()   //logs out mike
setTimeout(this.myObj.go,200)  //logs out (emptyString)
4

6 に答える 6

1

これを試して

var myObj = {
    name:"mike",
    go:function(){
        console.log(this.name);
    }

}

myObj.go();   //logs out mike
setTimeout(function(){
    myObj.go(); //logs out mike too
},200);
于 2013-04-08T21:20:46.870 に答える
1

これを試してください

setTimeout(function(){
  myObj.go();
},200);
于 2013-04-08T21:17:13.490 に答える
1

前のオブジェクトを参照する変数を定義します。

var _this = this;
setTimeout(function() {_this.myObj.go();}, 200);
于 2013-04-08T21:17:57.133 に答える
1

いくつかの方法:

setTimeout(this.myObj.go.bind(this.myObj), 200);

また

var that = this;
setTimeout(function () {
    that.myObj.go();
}, 200);

.bind古いブラウザではサポートされていないため、サポートするにはポリフィルが必要になる場合があります。メソッドに関する情報は次のとおりです: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind

于 2013-04-08T21:17:57.907 に答える
1
var myObj = {
    name:"mike",
    go:function(){
        console.log(this.name);
    }

}

setTimeout(function(){myObj.go()},200)
于 2013-04-08T21:18:32.160 に答える
0

あなたのコードは、いくつかのことを差し引いたものです。

setTimeout(this.myObj.go,200)

する必要があります

setTimeout(function() {myObj.go()},200)

this.myObjsetTimeout のスコープ内になく、無名関数または変数関数にラップされていなかったため、未定義でした。しかし、あなたは正しい軌道に乗っていました!

于 2013-04-08T21:39:26.933 に答える