JavaScript中是否不再允许向类添加另一个方法?
因此,我在typescriptlang.org/play中玩,用JavaScript中是否不再允许向类添加另一个方法?,javascript,Javascript,因此,我在typescriptlang.org/play中玩,用pilot():void{}的方法编写了一个Plane类,并将JS代码粘贴到我的Chrome控制台中,玩了一分钟 然后我想将能够向类平面{}添加另一个方法的概念付诸实践。这就是我在TypeScript方面所做的: class Plane { color: string = 'red’; pilot(): void { console.log(‘swoosh’); } takeoff
pilot():void{}
的方法编写了一个Plane
类,并将JS代码粘贴到我的Chrome控制台中,玩了一分钟
然后我想将能够向类平面{}
添加另一个方法的概念付诸实践。这就是我在TypeScript方面所做的:
class Plane {
color: string = 'red’;
pilot(): void {
console.log(‘swoosh’);
}
takeoff(): void {
console.log(‘ready for takeoff’);
}
}
这是JS版本:
class Plane {
constructor() {
this.color = 'red';
}
pilot() {
console.log(‘swoosh’);
}
takeoff() {
console.log(‘ready for takeoff’);
}
}
当我将其粘贴到Chrome控制台时,我得到了未捕获的语法错误:标识符“Plane”已经声明了
好的,那么我如何添加一个新方法呢?我应该能够轻松地将尽可能多的方法附加到原型上。是因为我的JS代码中不存在术语
prototype
?class
函数,如JS中的const
或let
:不能重新声明。当我在使用这些术语的控制台中粘贴代码时,通常每次都会刷新页面
但令人高兴的是,新版Chrome允许您在控制台中重新声明let
和const
。我不知道这是否会扩展到类
请注意,您确实可以在声明了
Plane
之后添加一行,如Plane.prototype.foo=function(){}
,这将如您所期望的那样工作。看起来您正在将JavaScript代码粘贴到一个已经定义了Plane
类的控制台中
如果已经粘贴了类定义,但无法通过再次粘贴编辑过的版本重新声明,则需要刷新页面或在空选项卡中打开控制台以获得新的环境
如果您想尝试将方法添加到现有类中,您可以这样做:
// You start by defining the original class (or picking one of the defined ones like Date)
class Plane {
// Your class definition
getName() { return 'I am a plane'; }
}
// Then somewhere later in your code (or console)
Plane.prototype.sayHello = function() {
return 'Hello ' + this.getName();
}
// And finally
const plane = new Plane();
plane.sayHello(); // Will return Hello I am a plane
感谢您的回复,因为TypeScript的JS版本不像几个月前那样提供了
prototype
的使用,我现在实际上必须将它附加到class对象,然后将新方法附加到它。没关系,看起来你也在回答中加入了这个。类似的问题也得到了回答