封装和实例化对象



我正在尝试将一个对象分配给另一个对象的属性。

这就是真实项目的模型。在这里,我有一场比赛,有一系列的汽车,它们有一个车手属性。驱动程序属性是一个对象。在控制台输出端,我想拥有一辆带有驾驶员名称的汽车。

<script>
    let carsNames = ["Ferrari", "Mercedes", "Maserati", "Renault"];
    let drivers = ["Ayrton", "Alain", "Michael", "Nikki"];
    let Car = (function (_team, _driver) {
        let team = _team;
        let driver = _driver;
        return {
            getTeam: function () {
                return team;
            },
            getDriver: function () {
                return driver;
            }
        }
    });
    let Driver = (function (_name) {
        let name = _name;
        return {
            getName: function () {
            }
        }
    });
    let Race = (function () {
        cars = [];
        for (let i = 0; i < carsNames.length; i++) {
            driver = new Driver(drivers[i]);
            car = new Car(carsNames[i], driver);
            cars.push(car);
        }
        return {
            getCars: function () {
                return cars;
            }
        }
    });
    let GPSyldavie = new Race();
    let myrace = GPSyldavie.getCars();
    myrace.forEach(function (mr) {
        console.log(mr.getTeam(), mr.getDriver().getName());
    })
    // Console output :
    // Ferrari undefined
    // Mercedes undefined
    // Maserati undefined
    // Renault undefined
</script>

关键是将司机与汽车捆绑在一起,但在某处我没有告诉汽车它是由司机驾驶的。

你的 getName 函数不返回任何内容...


    let Driver = (function (_name) {
            let name = _name;
            return {
                getName: function () {
                }
            }
        });

应该看起来更像...


    let Driver = (function (_name) {
            let name = _name;
            return {
                getName: function () {
                    return name;
                }
            }
        });

最新更新