【问题标题】:How to pass class properties as parameters in class method to then console log the output in Javascript?如何在类方法中将类属性作为参数传递,然后用 Javascript 控制台记录输出?
【发布时间】:2020-09-06 19:41:34
【问题描述】:

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

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

如果我创建 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> 节点 main.js 未定义

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

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

【问题讨论】:

  • 我离开了结构化范式”——呃,JS 还是结构化编程语言。
  • 是的,先生,就像许多语言一样,JS 也可以被视为 OOP 语言,这正是我决定要做的事情。 :D

标签: javascript class oop methods parameter-passing


【解决方案1】:

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

在程序结束时通过调用sun.set_star_color() 设置星形颜色,然后控制台记录你的星形console.log(sun)

【讨论】:

  • 哇,真的点击了,对我来说非常有意义,谢谢你,我什至意识到我可以在构造函数本身上做条件。
猜你喜欢
  • 2010-11-13
  • 2014-05-15
  • 2021-02-05
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多