首页 > 解决方案 > 如何在类方法中将类属性作为参数传递,然后用 Javascript 控制台记录输出?

问题描述

所以我是编程新手,就在几天前,我离开结构化范式冒险进入 OOP,因为我对制作游戏很感兴趣,(我选择 JS,因为我的兄弟,一个真正的网络/游戏开发人员编写了他的引擎在上面,我想和他一起做游戏,而且JS很棒!)现在我开始想做一个小的“太阳能系统创造者”来练习,我从一开始就遇到了问题......

好的,对于这个问题,我从“太阳课”开始。我希望它的属性,如“质量”、“颜色”、“重力”等,只需输入星型即可自动设置,例如:

如果我创建一个 M 型恒星(通常是红矮星),我希望它的颜色自动设置为红色(最好是列表中的随机颜色,但我必须从某个地方开始)

现在,代码:

class Star{
    constructor(props = {}){
        this.starType = props.starType || "M Type"
        this.starColor = props.starColor || "No color"
        this.starSize = props.starSuze || 0
        this.starHabitablePlanetChance = props.starHabitablePlanetChance + "%" || 0 + "%"
    }

    set_star_color(starType){
        starType = this.starType
        switch (starType) {
            case starType = "M Type" :
                this.starColor = "Red"        
                break;

            default:
                "No color"
                break;
        }
    }

}


let sun = new Star({
    starType : "M type"
})

console.log(sun.set_star_color())

我的逻辑(顺便说一句很糟糕)告诉我,我必须询问“sunType”作为参数,以便稍后将其切换为颜色(其余属性相同,但方法不同,或者一种赋予星星特征的大方法)

终端输出:PS D:\VS Code\JS\Solar System> node main.js undefined

我知道这意味着什么,但我正在努力解决它。

谢谢,我知道我问的太多了,但是如果它可以是 ELI5 格式的答案,那将有很大帮助。

标签: javascriptclassoopmethodsparameter-passing

解决方案


您正在尝试记录 的返回值,sun.set_star_color()但您没有在该函数中返回任何内容,这就是您得到undefined. (默认情况下,如果没有提供函数的返回值)

在程序结束时,通过调用sun.set_star_color()然后 console.log 你的星来设置星的颜色console.log(sun)


推荐阅读