【发布时间】: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