【发布时间】:2017-10-04 12:22:54
【问题描述】:
以下代码的输出是undefined has undefined wheels,而不是Bike has 2 wheels。
Instantiated object 不能调用没有附加到任何对象的prototype 的函数吗?
var vehicle = function(name, wheels){
name = "car",
wheels = 4,
fuel = "petrol"
}
function drive(name, wheels) {
console.log(this.name + " has " + this.wheels + " wheels" );
}
var vehicle1 = new vehicle('Bike' , 2);
drive.call(vehicle1); //undefined is driven with undefined wheels
【问题讨论】:
-
在
vehicle函数中,您需要使用this....定义这些变量,例如:this.name = "car"。 -
您的车辆构造函数应该执行
this.name = ...将变量附加到实例。您只是在声明隐式全局变量。 -
我还是明白了,
car has 4 wheels -
@Prem 你修复了你的构造函数,使它服从传递的参数,而不是硬编码“car”和 4?
-
@Prem:显然,你没有。请仔细阅读Pointy's answer和mine。
标签: javascript