2016-12-02 56 views
0

我想有條件地訪問該對象的屬性,但對於isCar = trueisCar = false,我的代碼始終返回100對於obj.stats.speed。我究竟做錯了什麼?由於如何使用布爾值評估將getter綁定到函數?

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);