Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中是否不再允许向类添加另一个方法?_Javascript - Fatal编程技术网

JavaScript中是否不再允许向类添加另一个方法?

JavaScript中是否不再允许向类添加另一个方法?,javascript,Javascript,因此,我在typescriptlang.org/play中玩,用pilot():void{}的方法编写了一个Plane类,并将JS代码粘贴到我的Chrome控制台中,玩了一分钟 然后我想将能够向类平面{}添加另一个方法的概念付诸实践。这就是我在TypeScript方面所做的: class Plane { color: string = 'red’; pilot(): void { console.log(‘swoosh’); } takeoff

因此,我在typescriptlang.org/play中玩,用
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对象,然后将新方法附加到它。没关系,看起来你也在回答中加入了这个。类似的问题也得到了回答