-2

d.age()この例でが機能しないのはなぜですか?

function Dog(input) {
    this.name = input;
    this.color = function(){
        return 'black';
    }
    this.age = function(){
        setTimeout(function(){
            return '10';
        }, 500);
    }    
}  

window.d = new Dog('Blacky');
4

3 に答える 3

1

これは機能しますが、期待どおりには動作しません。コールバック システムを使用する必要があります。

function Dog(input) {
    this.name = input;
    this.color = function(){
        return 'black';
    }
    this.age = function(callback){
        setTimeout(function(){
            callback('10');
        }, 500);
    }    
}  

window.d = new Dog('Blacky');
d.age(function(age){
// do some stuff with age
});

jquery.deffered http://api.jquery.com/deferred.promise/もご覧ください。

于 2013-08-09T14:20:03.697 に答える
0

age() を呼び出すと、関数で何も返さないため、タイムアウトが開始され、関数は undefined を返します。次に、500 ミリ秒後にタイムアウトがトリガーされ、その関数は 10 を返します。

したがって、この関数が何をしたいのかわかりません。

于 2013-08-09T14:28:04.810 に答える