如何将 getter 绑定到具有布尔值评估的函数?

How to have a getter bound to a function with boolean evaluation?

我想有条件地访问对象的属性,但我的代码总是 returns 100 for obj.stats.speed for isCar = true and 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

只需更改您的 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);