我正在探索ES6。我可以在更新中看到该值,但是我在努力使用类方法。
class Item{
constructor(name){
this.name=name;
}
}
class Park extends Item{
constructor(name, numberoftrees, size){
super(name);
this.numberoftrees=numberoftrees;
this.size=size;
}
classifyPark(){
const classification = new Map();
classification.set(1, "SMALL");
classification.set(2, "MEDIUM");
classification.set(3, "LARGE");
console.log(`${this.name} park is sized: ${classification.get(this.size)} and has
${this.numberoftrees} trees.`)
}
}
var Park1 = new Park();
Park1.name=prompt('ENTER NAME OF PARK');
Park1.numberoftrees=prompt('ENTER # OF TREES');
Park1.size=parseInt(prompt('ENTER SIZE'));
function reportPark(parks){
console.log("PARK REPORT>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
parks.forEach(item=>item.classifyPark());
}
reportPark(parks);
为什么我需要classifyPark作为我的课堂方法?为什么我不应该只创建一个单独的Map并直接访问它呢?我正在接受一个肮脏的课程,但是没有人在问答中回答这个问题,我完全感到困惑。
classifyPark只是创建我们的地图,然后使用size属性作为地图中的键来控制台记录该值。是吗这似乎是一种疯狂的做事方式。
答案 0 :(得分:0)
这是一个简单的示例,但它说明了classifyPark
通过使用Item
访问this
类中的变量。
console.log(`${this.name} park is sized: ${classification.get(this.size)} and has ${this.numberoftrees} trees.`)
在“现实世界”中,类方法通常更为复杂,并且可以使用类变量和其他类方法来完成更复杂的事情。
另一个琐碎的例子,但也许会有帮助
class Circle {
constructor(radius) {
this.radius = radius;
}
area() {
return 3.14*this.radius*this.radius;
}
circumference() {
return 3.14*this.radius;
}
}
const circle = new Circle();
console.log(circle.area());
console.log(circle.radius());
将area
和circumference
放在Circle
上而不是具有辅助函数的想法是封装逻辑。圆知道如何计算自己的半径和圆周。