我是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能做什么和不能做什么的启发,以及可以做什么和应该做什么。
谢谢。
答案 0 :(得分:0)
您应该能够使用原型定义新方法,但不确定是否可以更改输入参数编号。
car.protype.color = function(){ 返回"红色" }
在ruby中你既可以改变参数数量,也可以使用metaprogrammimg定义一个新方法
ruby_object(*参数) ruby_object.define_method()