2016-12-02 57 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);