在定义构造函数后,可以将实例属性添加到JavaScript原型中吗?

在定义构造函数后,可以将实例属性添加到JavaScript原型中吗?,javascript,ruby,constructor,prototype,Javascript,Ruby,Constructor,Prototype,我对JavaScript还不熟悉,我正试着把注意力集中在constructor函数和原型上。我在Ruby方面有一些经验,因此在学习新的JS功能时,如果可能的话,我会尝试将它们等同于Ruby中类似的功能 在我看来,原型类似于Ruby类。因此,我的问题是,是否可以使用className.prototype命令向对象的实例添加所需的属性,或者是否有必要像在Ruby中一样重新打开class/prototype 例如,假设我有以下构造函数函数来创建汽车原型: function Car (make,mode

我对
JavaScript
还不熟悉,我正试着把注意力集中在
constructor
函数和
原型上。我在
Ruby
方面有一些经验,因此在学习新的JS功能时,如果可能的话,我会尝试将它们等同于
Ruby
中类似的功能

在我看来,
原型
类似于
Ruby
类。因此,我的问题是,是否可以使用
className.prototype
命令向对象的实例添加所需的属性,或者是否有必要像在
Ruby
中一样重新打开
class
/
prototype

例如,假设我有以下
构造函数
函数来创建汽车原型:

function Car (make,model,year) {
    this.make = make;
    this.model = model;
    this.year = year;
}
我创造了一些汽车:

myCar = new Car ("Honda", "Civic", 2015);
anotherCar = new Car ("Ford", "Focus", 2001); 
现在让我们假设我希望Car的新实例接受一个
color
参数(即从父对象继承一个
color
属性)。是否可以执行以下操作

Car.prototype.color = color;
这样,当一辆新车初始化时,它会期望传递一个颜色参数吗?也就是说,Car
constructor
函数现在应该是(但我自己没有更改):

因此,应按如下方式初始化新实例:

aThirdCar = new Car("BMW","325",2008,"black");
或者,我必须返回原始的
构造函数
函数并手动进行这些更改吗

我知道使用
className.prototype.methodName
是此功能的主要用途,因此所有实例共享一个方法,而不是使用自己的方法初始化

我对这个功能感兴趣的是我自己对JS可以做什么和不能做什么以及可以做什么和应该做什么的启发


谢谢。

您应该能够使用prototype定义新方法,但不确定是否可以更改输入参数编号

car.protype.color=函数(){ 返回“红色” }

在ruby中,您既可以更改参数的数量,也可以使用元编程定义新方法

ruby_对象(*args)
ruby\u object.define\u method()

否否否,构造函数不会“创建原型”。构造函数有一个原型。Ruby继承和JavaScript继承有很大不同。不,更改prototype对象与构造函数的形式参数列表完全无关。函数定义后不能更改。谢谢@Pointy,这很有帮助,很高兴知道。
aThirdCar = new Car("BMW","325",2008,"black");