javascript - 在定义构造函数后,实例属性可以添加到 JavaScript 原型(prototype)吗?

标签 javascript ruby constructor prototype

我是 JavaScript 的新手,我正在努力研究 constructor 函数和 prototypes。我有一些使用 Ruby 的经验,所以在学习新的 JS 功能时,如果可能的话,我会尽量将它们等同于它们在 Ruby 中的类似功能。

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

例如,假设我有以下 constructor 函数来创建 Car 原型(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 函数现在应该是(但我自己没有更改它):

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 函数并手动进行这些更改吗?

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

我对这个功能的兴趣是为了让我自己了解 JS 可以做什么和不能做什么,以及可以做什么和应该做什么。

谢谢。

最佳答案

您应该能够使用原型(prototype)定义一个新方法,但不确定您是否可以更改输入参数的数量。

car.protype.color = function() { 返回“红色”

在 ruby​​ 中,您既可以更改参数数量,也可以使用 metaprogrammimg 定义新方法

ruby 对象(*参数) ruby_object.define_method()

关于javascript - 在定义构造函数后,实例属性可以添加到 JavaScript 原型(prototype)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356415/

相关文章:

javascript - 动画 scrollTop 在 Chrome 上不起作用?

ruby-on-rails - 如何使用 rails 将设计登录信息传递到不同的应用程序

arrays - 删除数组中第一个空格后的所有内容

javascript - 如何获取 block 中的元素?

Javascript 未捕获类型错误仅在实时环境中出现,在开发环境中运行良好

javascript - Meteor 的 Iron Router 不关闭模态对话框

ruby - 如何从特定(已知)模式映射新数组?

java - 设置一个类的 jButton 在另一个类中的可见性

c++ - 如何在 C++ 中的派生类的构造函数中初始化基类的 const 变量?

c++ - 具有冲突名称的类的构造函数