2016-12-02 2 views
0

Я хотел бы получить доступ к свойствам объекта условно, но мой код всегда возвращает 100 для obj.stats.speed для обоих isCar = true и isCar = false. Что я делаю не так? СпасибоКак получить геттер, связанный с функцией с булевой оценкой?

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

Смежные вопросы