2016-12-02 11 views
0

オブジェクトのプロパティに条件付きでアクセスしたいのですが、私のコードは、isCar = trueisCar = falseの両方に対して、obj.stats.speedに対して常に100を返します。私は間違って何をしていますか?ありがとうブール評価を持つ関数にゲッターをバインドするにはどうすればよいですか?

var isCar = false; 

var obj = { 
    car : { 
     speed: 100, 
     size: 1000 
    }, 
    bike: { 
     speed: 10, 
     size: 20 
    } 
}; 

Object.defineProperty(obj, "stats", { get: function() { 

    if(isCar) { 
     return car; 
    } else { 
     return bike; 
    } 

} }); 

console.log(obj.stats.speed); //returns 100 instead of 10 

答えて

1

returnステートメントの値を変更してください。

var isCar = false; 
 

 
var obj = { 
 
    car : { 
 
     speed: 100, 
 
     size: 1000 
 
    }, 
 
    bike: { 
 
     speed: 10, 
 
     size: 20 
 
    } 
 
}; 
 

 
Object.defineProperty(obj, "stats",{ get: function() { 
 
    if(isCar){ 
 
     return obj.car; //changed from car to obj.car 
 
    }else{ 
 
     return obj.bike; //changed from bike to obj.bike 
 
    } 
 
} 
 
}); 
 

 
console.log(obj.stats.speed);

関連する問題