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

时间:2015-02-06 00:08:56

标签: javascript ruby constructor prototype

我是JavaScript的新手,我正试图绕过constructor个函数和prototypes。我对Ruby有一些经验,所以在学习新的JS功能时,如果可能的话,我会尝试将它们等同于Ruby中的类似功能。

对我而言,似乎prototypes类似于Ruby类。所以我的问题是,是否可以使用className.prototype命令向对象的实例添加必需的属性,或者是否有必要像{{1}中那样重新打开class / prototype }}?

例如,假设我有以下Ruby函数来创建Car原型:

constructor

我创造了几辆汽车:

function Car (make,model,year) {
    this.make = make;
    this.model = model;
    this.year = year;
}

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

之类的操作
color

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

constructor

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

function Car (make, model, year, color) {
    this.make = make;
    this.model = model;
    this.year = year;
    this.color = color;
}

或者,我是否必须返回原始aThirdCar = new Car("BMW","325",2008,"black"); 功能并手动进行这些更改?

我理解使用constructor是此功能的主要用途,因此所有实例共享一个方法而不是使用自己的方法进行初始化。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

car.protype.color = function(){ 返回"红色" }

在ruby中你既可以改变参数数量,也可以使用metaprogrammimg定义一个新方法

ruby​​_object(*参数) ruby_object.define_method()